Perlではまった

サブルーチンで引数を取得するとき、@_から取得するってことを知って、喜び勇んで使ってみました。

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

ってな感じで。

@_はリストなので、受け取り側もリストでないと駄目よってことかな。たぶん。