引数として渡されるとき、
@_ = (@array, %hash);
という風に配列コンテキストで渡るのかな?ちょっと実験。
%hash = ('key1' => 1, 'key2' => 2);
@array = (7, 8, 9);
@arg1 = (%hash, @array);
@arg2 = (\%hash,\@array);
print "@arg1\n";
print "@arg2\n";
こんなのを書いて実験すると。
$perl test.pl
key2 2 key1 1 7 8 9
HASH(0x9771088) ARRAY(0x9771108)
どうやら想像通りらしい。
リファレンスを受け取ったサブルーチン側では、デリファレンスしてやる必要があるので、そのあたりで使われる記号が増えるという印象を生むのかな?
改めて自分の作ったサブルーチンを見ると、確かに$記号はやたら使ってるし、デリファレンスの辺りは、一週間前の自分には読めないだろうなとは思う。
ただ、書いているときはそれほど気にならなくて、それよりmyを忘れちゃうことの方が多い。javascriptのvarとか、VBAのDimみたいなものなので、そのうち慣れると信じることにしよう。
あとテストは重要。
詳しくない言語ほどテストの価値は上がるのかも。
0 件のコメント:
コメントを投稿