勘違いしてしまうのしょうがないね。 また、ワーク変数にリファレンス値を代入後、デリファレンスすると元の値にアクセスが出来ます。 しかし、$_[0] を直接デリファレンスした $$_[0] では、元の値にアクセスが出来ません。 ワーク変数と$_[0]の中身は、同じリファレンスが入っているにも関わらず、そうなるのです(謎)。 Perlの関数引数 $_[0]の謎 - 燈明日記 元記事の現象とは下記のようなコードを書いた時の話ですが、 use strict; sub hoge { print $$_[0]; } my $str = 'aaa'; hoge(\$str); これを実行してもprintで何も出力されないというわけですね。 実はこれ、謎でもなんでもなくて単にデリファレンスの優先順位が配列参照よりも低いから起こってるだけです。 つまり上記のコードは@_の0番目の要素をスカラデリファレンスし
![$_[0]の謎は偶然の産物 - Unknown::Programming](https://cdn-ak-scissors.b.st-hatena.com/image/square/bfd406687a88ae41fb03cfb85b518262541e655d/height=288;version=1;width=512/https%3A%2F%2Fimages-fe.ssl-images-amazon.com%2Fimages%2FI%2F416G1S0D0AL._SL160_.jpg)