【发布时间】:2014-03-18 15:46:08
【问题描述】:
这是一个非常短的脚本,我正在尝试使用它来让 PC 的命令提示符运行一系列脚本。脚本的数量各不相同,但对于此示例,假设有 10 个,编号为 0-10。这些脚本是 SAS 程序文件。我正在使用system 命令,但有一个我无法发现的错误。
use strict; use warnings;
for ( my $i = 0; $i < 10; $i++ ) {
system "sas -SYSIN $i.sas -ICON -NOSPLASH -LOG 'c:\Users\...' -PRINT 'c:\Users\...' ";
}
我收到以下错误:
"Missing braces on \o{} at "perlscript.pl" line 6, near "sas..."
我在system 命令之后的文本周围放置了大括号,但这并不能解决问题。我也尝试了括号(),但没有任何乐趣。在读取文件位置时,添加额外的大括号或 () 也会给我“无法识别的转义”错误。
【问题讨论】:
-
尝试使用 qq{} 代替引号,例如
system(qq{sas ...}); -
你的意思是:`qq { sas -SYSIN $i.sas -ICON -NOSPLASH -LOG 'c:\Users\...' -PRINT 'c:\Users\.. .' } ;
-
你应该真正使用列表形式:
system "sas", "-SYSIN", "$i.sas", "-ICON", "-NOSPLASH", "-LOG", "c:/Users/...", "-PRINT", "c:/Users/...";——这样可以避免生成一个 shell 来运行命令。 -
人们对此投了赞成票,但我发现这会产生很多错误消息,
missing operator消息。 -
好的,我忘记了逗号。我的错。
标签: perl shell command-line sas