2023年3月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

 

« ドラえもん最終回のお話 | トップページ | 読了:タムール記 1 聖騎士スパーホーク »

2007年6月28日 (木)

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 聖騎士スパーホーク »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Perlの配列をメンバ変数に入れる:

« ドラえもん最終回のお話 | トップページ | 読了:タムール記 1 聖騎士スパーホーク »