问个小白的问题

问个小白的问题

以这个做例子:
#output.pl
#!c:\Perl\perl
use strict;
use warnings;

my $number = @ARGV;
print qq{there is $number parameters \n};
for (@ARGV) {
        print "$_\n";
}


当我命令行输入
output.pl 1 2 3
的时候, 程序能运行,但是显示说有0个参数

当我用
perl output.pl 1 2 3
的时候, 能正确的打出3个参数

在有的电脑上重现, 而有的电脑上就两种方式都正常, 请高人解答是否某处设置有误.
运行一切正常.

猜测: 难道是Perl 版本问题??
我装的是 Active包, Perl版本是5.8.8


QUOTE:
原帖由 zfol_510 于 2007-9-11 14:31 发表
以这个做例子:
#output.pl
#!c:\Perl\perl
use strict;
use warnings;

my $number = @ARGV;
print qq{there is $number parameters \n};
for (@ARGV) {
        print "$_\n";
}


当我命令行输入
outp ...

1. #!命令解释器应该放到第一行,windows环境下不知道
2. c:\Perl\perl 这里需不需要转义?
3. 你的perl安装的位置真奇怪,我记得怎么也是xxxxx/Perl/bin/perl.exe 或者 wperl.exe吧
4. 你说的有的不能重现估计是pl文件的默认打开方式问题。

谢谢LS的回答, 你第四点说的对,应该是Windows的打开方式的问题. 默认打开方式是Perl语言解释器.
也就是说我直接输入 output.pl 的时候, windows把它转换成perl.exe output.pl, 然后把参数丢弃了. 就像对待,比如说, a.txt的时候自动调用notepad一样.

我试着把文件关联取消掉, 但是现在.pl文件完全不能执行了,似乎命令解释器对于windows无效?

我已经把斜线改为linux方式,"/", perl.exe的路径也对, 也试着用wperl.exe
但是都不能解决, 继续请教高人这个问题
你的 *.pl 关联应该是 "path\per.exe" "%1" %* 。。这样应该不会丢参数。

另外,我建议在Win下还是使用 perl *.pl 的好:) 即手动输入。。
今天解决了上来看, 发现答案已经有了

问题已经解决, 我的Perl关联是自己添加的, 因此没有%*, 现在加上后一切正常.

感谢Osment, nkcsx和Loki的回复