关于命令行参数和#!参数的处理

关于命令行参数和#!参数的处理

关于命令行参数和#!参数的处理
命令行参数和#!参数的处理流程应该是一样的,参照“The #! line is always examined for switches as the line is being parsed.”(perlrun)。
就是说以下两种方法是对的(结果一致),比如option -c:
1) perl -c mytest.pl;
mytest.pl的内容是:
my $var = 1;
2) chmod 755 mytest.pl
./mytest.pl;
mytest.pl的内容是:
#!/usr/bin/perl -c
my $var = 1;

但是似乎大多数参数使用下面的方法也能够得到同样的结果:
3) perl mytest.pl
mytest.pl的内容是:
#!/usr/bin/perl -c
my $var = 1;

问题是,对有些参数,以上方法3也可以获得期望的结果。但对有些参数似乎不能获得和方法1,2相同的结果。比如参数-s:
1) perl -s mytest.pl -f=abc;
mytest.pl的内容是:
if ($f) { print "$f"; }
结果为abc
2) chmod 755 mytest.pl;
./mytest.pl -f=abc;
mytest.pl的内容是:
#!/usr/bin/perl -s
if ($f) { print "$f"; }
结果为abc

3) perl mytest.pl -f=abc;
mytest.pl的内容是:
#!/usr/bin/perl -s
if ($f) { print "$f"; }
结果为1

从perlrun的手册页没有找到相关不可以这样用的说明,难道不能采用方法3的方式?但因为大多数的参数都是可以这样的,比如常用的-w。
请问哪位能解释一下原因,THANKS

[CCB]10[/CCB]
哪位大牛能给指点一下啊?.
哪位大牛能给指点一下啊??
testing perl....