#! usr/bin/perl
use strict;
use warnings;
#◎関数values=>hashの値を返す関数
my %hash1=(
'koma'=>55,
'gema'=>11,
'baba'=>35,
'italy'=>777,
'france'=>454,
9=>'hello'
);
my @keys = keys(%hash1);
my @value = values(%hash1);
print "@keys\n"; #出力結果=>koma italy gema 9 france bsba
print "@value\n"; #出力結果=>55 777 11 hello 454 35
print "\n";
#◎関数each=>hashに含まれるキーと値を一組ずつ取り出す
#以下2通りだと、eachを使うほうがメモリ消費が少なくてすむ
while (my($key,$value) = each(%hash1)){
print "$key→$value\n";
}
print "\n";
#上のwhile文と同じ結果が出るよ。
foreach (keys(%hash1)){
print "$_→$hash1{$_}\n";
}
print "\n";
#◎関数exists=>ハッシュの値があるかどうかをチェックする(引数は、ハッシュか配列の要素。ハッシュ・配列そのものは引数にできない。)
my %hash2;
if (exists($hash1{italy})){
print "hasu2の値は存在するよ。\n";
}
=head
#そもそも存在しないキーについては、使えない。(エラーがでるよ)
if (exists(%hash1{10})){
print "存在するよ\n";
}else{
print "存在しないよん\n";
}
=cut
print "\n";
#◎関数delete=>delete $hash{$key};=>ハッシュからキーに対応する値を削除する
print delete $hash1{baba}"\n\n";
foreach (keys(%hash1)){
print "$_→$hash1{$_}\n";
}#出力結果=>babaとbabaの値35以外がprintされる。
print "\n";
#◎undef %hash; =>hashから全てのキーと値を削除する
undef %hash1;
foreach (keys(%hash1)){
print "$_→$hash1{$_}\n";
}#出力結果=>なにも表示されない=全て削除されちゃった。