プログラマでありたい

おっさんになっても、プログラマでありつづけたい

ハッシュに配列を格納する

 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つのキーに複数の値が対応するハッシュ」に詳しく書いてあります。(手元にあるのが旧版なので、新版は解りません。)