OO形式で作る時に、データメンバの中身に配列を入れたい時が稀にあります。慣れていないと割と悩みます。使っていないとすぐ忘れます。(←今この状態。)思い出しがてらにメモ。
Perlクックブックに倣って、unixのログインユーザを格納する例です。
#コンストラクタ sub new { my $class = shift; my $self = bless {}, $class; return $self; } #ユーザリストをハッシュにセット sub setUserList { open(WHO, "who|") or die "can't open who: $!"; while (<WHO>) { ($user, $tty) = split; push( @{$self->{user_list}},$1); } } #ユーザリストを表示 sub printUserList { foreach my $user (@{$self->{user_list}}) { print $user,"\n"; } }
ポイントは、push文で格納する所です。この辺り、Perlクックブックのハッシュのレシピ「1つのキーに複数の値が対応するハッシュ」に詳しく書いてあります。(手元にあるのが旧版なので、新版は解りません。)