【perl】ハッシュ〜キーと値、内容表示、内容追加〜
忙しいほど、計画的に動けるものですね。さて、今日はハッシュの復習。
#! usr/bin/perl use strict; use warnings; #◎【基本】%ハッシュ名(キー => 値); => キーは文字列、値はスカラー my %hash = ( 'komage' => 1, 'gomage' => 2, 'mamage' => 3, 'papage' => 'パパです。' ); print $hash {'gomage'}."\n"; print $hash {'papage'}."\n"; #print "$hash {'papage'}\n"; #この書き方はだめだって。 print q($hash {'papage'})."\n";#出力結果 => $hash {'papage'} =>print '$hash {'papage'}'だとエラー。 print "\n"; #◎【keys関数】keys(%hash); => ハッシュ%hashに含まれているすべてのキーをリストで返す #※キーのリストは、順番は宣言した通りにはならない→perlのバージョンによって順番が違う。(ハッシュに順番という概念はないから) foreach my $key (keys(%hash)){ my $value = $hash{$key}; print "$key →$value\n"; } #以下の書き方でもおっけー。 foreach (keys(%hash)){ my $value = $hash{$_}; print "$_ →$value\n"; } print "\n"; #◎キーとキーの数を返す my @key1 = keys(%hash);#配列に代入すると、キーが返る(順番はperlのバージョンによって違う) print "@key1\n";#出力結果 => mamage papage gomage komage my $key1 = keys(%hash);#スカラーに代入すると、キーに数が返る print "$key1\n";#出力結果 => 4 print "\n"; #◎$hash{$key} = $value; => キーと値の追加 =head #これ↓は追加ではなく、ハッシュ%hashの書き換え。 %hash =( 'boroge' => 'abcd', 'foroge' => 123456 ); foreach (keys(%hash)){ my $value = $hash{$_}; print "$_ →$value\n"; } =cut #以下だと、ちゃんと追加できる。 $hash {'boroge'} = 'abcd';#「=>」ではなく「=」なのに注意 $hash {'foroge'} = 123456; foreach (keys(%hash)){ my $value = $hash{$_}; print "$_ →$value\n"; } print "\n"; #◎同じキーを使うと、本当に上書きされるのか。 $hash {'boroge'} = '上書きされた?';#すでに登場しているキー'boroge'に別の値を入れてみる。 print $hash {'boroge'},"\n";#出力結果 => 上書きされた? =>値が'abcd'ではなくなっている。