サブルーチンで引数を取得するとき、@_から取得するってことを知って、喜び勇んで使ってみました。
$arg="aaa"; hoge($arg); sub hoge { my $arg = @_; print $arg . "\n"; }
これだと、"aaa"が表示されずに1が表示される。な、なんで〜って悩み続けること数時間。
実際には、myの所に括弧が必要でした。具体的には、
$arg="aaa"; hoge($arg); sub hoge { my ($arg) = @_; print $arg . "\n"; }
ってな感じで。
@_はリストなので、受け取り側もリストでないと駄目よってことかな。たぶん。