インスタンス変数の配列を初期化・再初期化を行う
クラス化したモジュール内をインスタンス化し、インスタンス変数内の配列を初期化・再初期化する際の備忘録。
#!/usr/bin/env perl use strict; use warnings; use utf8; use Data::Dumper; { package Array::Test; use strict; use warnings; sub new { my $class = shift; my $self = {}; return bless $self, $class; } sub init { my $self = shift; # $self->{array} = (); では動作しない!! $self->{array} = []; } sub set { my ($self, $value) = @_; push @{$self->{array}}, $value; } 1; } my $at = Array::Test->new; # 配列として使うインスタンス変数を初期化する $at->init; # インスタンス変数の配列に値を代入する print "Initialize Instance Value as Array.\n"; foreach my $num (0..10) { $at->set($num); } # 代入終了後の配列の内容 print "Dump Instance Value as Array.\n"; print Dumper(@{$at->{array}}); # インスタンス変数を再初期化する print "Initialize Instance Value as Array.\n"; $at->init; print Dumper($at->{array}); # インスタンス変数の配列に値を再代入する print "Enter Numbers into Instance Value as Array Again.\n"; foreach my $num (11..20) { $at->set($num); } # 再代入終了後の配列の内容 print "Dump Instance Value as Array.\n"; print Dumper($at->{array});
実行結果。
Initialize Instance Value as Array. Dump Instance Value as Array. $VAR1 = 0; $VAR2 = 1; $VAR3 = 2; $VAR4 = 3; $VAR5 = 4; $VAR6 = 5; $VAR7 = 6; $VAR8 = 7; $VAR9 = 8; $VAR10 = 9; $VAR11 = 10; Initialize Instance Value as Array. $VAR1 = []; Enter Numbers into Instance Value as Array Again. Dump Instance Value as Array. $VAR1 = [ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 ];