运行Perl脚本,文件名为arg
问题描述:
在我的OSX机器上工作时,我的perl脚本接受了我的参数,没有任何抱怨,在它没有的窗口上。运行Perl脚本,文件名为arg
这里是什么即时通讯在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上。 我该怎么办? 谢谢。
答
你意识到你的||将会返回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)将是真实的,所以你进入你的 '错误' 块
答
在你的具体的例子:
$ARGV[0] = '-i'
$ARGV[1] = 'G:\perl\E-Garugamblin-1-1-irc.log'
见http://perldoc.perl.org/perlvar.html#%40ARGV
另外,Windows需要使用双引号包围命令行参数,而不是单个引号。
最后,在不使用'严格;使用警告;'对于沮丧和最糟糕的情况都是灾难。
+0
是的......我只是把事故单在味精。 – Dacto 2011-05-18 03:12:12
当你这样做时,你会得到什么:G:> \ perl> perl toxyz.pl ... – Andrew 2011-05-18 03:03:38
哦...它正常工作...为什么这种工作方式不同?它已经在运行脚本cus脚本输出无效的arg消息。 – Dacto 2011-05-18 03:05:28