Perlの配列をメンバ変数に入れる
久しぶりにPerlをいじっている。というか、ほおっていたプログラムを完成させようかと思って、修正しては動かしてPerlの仕様について学習しているといったところか。
んで、package内のメンバ変数(といっていいのか?)に対して、配列を追加していく方法がやっとわかった。
というのもメンバ変数は、
$self->{meber};
という風に記述する。これを配列として扱う表記方法がわからなかったのだ。
@list = $self->{meber};
と書いて、@listに要素を追加しても $self->{meber} に入れる方法がわからない・・・。
$self->{meber} = @list;
とかくと、$self->{meber}に @list の要素数が入ってしまうのか?
とまあ、もったいぶってもしょうがないので、以下に例を示してみる。
ファイル名:test.pl
use strict;
use Ctest;
my $objCtest = new Ctest;
$objCtest->setter(1,1);
$objCtest->setter(2,2);
$objCtest->setter('a','a');
$objCtest->getter;
ファイル名:Ctest.pm
package Ctest;
use strict;
sub new {
my $class = shift;
return bless {
m1 => []
}, $class;
}
sub setter {
my ($self, $d1, $d2) = @_;
push(@{$self->{m1}}, {x=>$d1, y=>$d2});
my $cnt = @{$self->{m1}};
print "Ctest1::setter cnt=$cnt\n";
}
sub getter {
my ($self) = @_;
foreach (@{$self->{m1}}) {
print "Ctest1::getter $_->{x} $_->{y}\n";
}
}
1;
これを実行すると以下の結果となる。
c:\>perl test.pl
Ctest1::setter cnt=1
Ctest1::setter cnt=2
Ctest1::setter cnt=3
Ctest1::getter 1 1
Ctest1::getter 2 2
Ctest1::getter a a
« ドラえもん最終回のお話 | トップページ | 読了:タムール記 1 聖騎士スパーホーク »
コメント