次の基本的な Perl モジュリーノを考えてみましょう:
#!/usr/bin/perl -l
package Toto;
__PACKAGE__->run(@ARGV) unless caller();
sub run
{
print "@ARGV";
print "@_";
}
1;
コマンドラインで実行すると、次のようになります。
$ ./Toto.pm 1 2 3
1 2 3
Toto 1 2 3
テストから呼び出す場合:
$ perl -MToto -le 'Toto::run(1,2,3)'
#first line blank - no ARGV set
1 2 3
つまり、run() 内の @_ の内容は、関数の呼び出し方法によって変わります。
何が起こっているのか説明できますか?