考虑以下基本的 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() 中@_ 的内容会根据函数的调用方式而变化。
你能解释一下发生了什么吗?