プログラマメモ2 - programmer no memo2

Perl - ref関数 - むずかしい... 2008/09/16

Perlです。

ハッシュをprintしようと思いました。

試しに、

%hash = (a=>"aa", b=>"bb");
print %hash."\n";

としましたが、もちろん出力されませんでした。

2/8


出力したければ、おそらくこうします。
%hash = (a=>"aa", b=>"bb");
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";
}


何故判定されない!?

正しくは下記のように書きます。
%hash = (a=>"aa", b=>"bb");

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";
}


リファレンス
リファレンス [Perl講座 -Smart]

: