运行Perl脚本,文件名为arg

时间:2011-05-18 03:01:12

标签: windows perl

在我的OSX盒子上工作时,我的perl脚本接受我的论据,没有任何抱怨,在Windows上它没有。

以下是我在cmd中所做的事情:

G:\perl>toxyz.pl -i "G:\perl\filename.log"
Error: invalid arguments.
G:\perl>

我的perl代码:

#!/usr/bin/perl -w -s
use File::Basename;

$logfile = $ARGV[0];

if(!$logfile || (!$s && !$i)){
    print STDERR "Error: invalid arguments.";
    exit(1);
}

这在OSX上运行良好。 我该怎么办? 感谢。

2 个答案:

答案 0 :(得分:6)

在您的具体示例中:

$ARGV[0] = '-i'
$ARGV[1] = 'G:\perl\E-Garugamblin-1-1-irc.log'

请参阅http://perldoc.perl.org/perlvar.html#%40ARGV

此外,Windows要求命令行参数被双引号括起来,而不是单引号。

最后,编写Perl而不使用'严格;使用警告;'是挫折和最坏情况下的灾难处方。

答案 1 :(得分:-1)

你意识到你的||的右侧将返回true,因为$ s和$ i未定义,将被视为false。

我在我的Mac上得到这个......

Name "main::s" used only once: possible typo at ./tmp.pl line 6.
Name "main::i" used only once: possible typo at ./tmp.pl line 6.

就这样(!$ s&&!$ i)将是真的,所以你输入'错误'块