第5章 ハッシュ

ここはそんなにも難しくなかったので、軽くまとめ。

配列では、[](ブラッケット)を使いますが、ハッシュでは{}(ブレース)を使う。

# 配列
$sos[0] = 'haruhi;
# ハッシュ
$sos{'dancho'} = 'haruhi;

ハッシュ全体を表すのには、%(パーセント記号)を使いう。また、ハッシュ全体を一気に定義するには=>を使うとわかりやすい。=>はコンマとほとんど等価なのね。

# コンマだけで定義
my %sos = ('dancho', 'haruhi', 'maid', 'mikuru', 'megane', 'yuki');
# わかりやすく=>を使って定義
my %sos = ('dancho' => 'haruhi', 'maid' => 'mikuru', 'megane' => 'yuki');

=>使った方がどうみても分かりやすい。


keys関数はハッシュのキーのリストを返す。values関数はハッシュの値のリストを返す。

my %sos = ('dancho' => 'haruhi', 'maid' => 'mikuru', 'megane' => 'yuki');
my @k = keys %sos;
my @v = values %sos;
print "@k\n";
print "@v\n";

実行すると、

$ perl sos_hash.pl 
dancho megane maid
haruhi yuki mikuru

となる。


each関数はハッシュを順にたどりながらキーと値のペアのリストを返す。

my %sos = ('dancho' => 'haruhi', 'maid' => 'mikuru', 'megane' => 'yuki');
while (my($key, $value) = each %sos) {
    print "$key => $value\n";
}

myはこんな風に使っても良かったっけな。実行すると、

$ perl sos_hash.pl 
dancho => haruhi
megane => yuki
maid => mikuru

となる。


exists関数はハッシュにあるキーが存在するかを確かめるのに使う。delete関数はハッシュから指定したキーを削除する。

my %sos = (
    'dancho' => 'haruhi',
    'maid' => 'mikuru',
    'megane' => 'yuki',
    'zatsuyou'=>'kyon' # 追加した
);

delete $sos{'zatsuyou'};
if(!exists $sos{'zatsuyou'}) {
    print "deleted!\n";
}

これを実行すると、"deleted !"と表示される。

初めてのPerl

初めてのPerl

  • 作者: ランダル・L.シュワルツ,トムフェニックス,Randal L. Schwartz,Tom Phoenix,近藤嘉雪
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2003/05
  • メディア: 単行本
  • 購入: 15人 クリック: 474回
  • この商品を含むブログ (294件) を見る