Perl - ref関数 - むずかしい...
2008/09/16
perl
Perlです。
ハッシュをprintしようと思いました。
試しに、
%hash = (a=>"aa", b=>"bb");
print %hash."\n";
print %hash."\n";
としましたが、もちろん出力されませんでした。
2/8
出力したければ、おそらくこうします。
%hash = (a=>"aa", b=>"bb");
while(($k, $v) = each %hash){
print "$k => $v\n";
}
while(($k, $v) = each %hash){
print "$k => $v\n";
}
次に、ハッシュだったら、という処理を行おうと考えました。
ref関数なるものがありました。
引数がリファレンスの場合に真、違う場合は偽を返します。
だそうです。
正直このリファレンスというのを理解していないので、下記のようなコードを書いて頭を悩ませました。
%hash = (a=>"aa", b=>"bb");
if(ref(%hash) eq 'HASH'){
print "i am hash\n";
}
if(ref(%hash) eq 'HASH'){
print "i am hash\n";
}
何故判定されない!?
正しくは下記のように書きます。
%hash = (a=>"aa", b=>"bb");
if(ref(\%hash) eq 'HASH'){
print "i am hash\n";
}
if(ref(\%hash) eq 'HASH'){
print "i am hash\n";
}
きっとperlのリファレンスを僕が理解していなからです。
さらに、
%hash = (a=>"aa", b=>"bb");
$ref = \%hash;
if(ref($ref) eq 'HASH'){
print "i am hash\n";
}
$ref = \%hash;
if(ref($ref) eq 'HASH'){
print "i am hash\n";
}
リファレンス
リファレンス [Perl講座 -Smart]
: