考慮以下基本的Perl modulino:Modulino包的名字添加到@_
#!/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()中@_的內容根據函數的調用方式而變化。
你能解釋一下發生了什麼嗎?
你也可以刪除該行並用'if(caller)'替換'sub main'。 – ikegami