Perl系统命令在命令提示符下运行脚本

ES5*_*S55 1 shell perl command-line sas

这是一个非常短的脚本,我试图使用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\...' ";
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

"Missing braces on \o{} at "perlscript.pl" line 6, near "sas..."
Run Code Online (Sandbox Code Playgroud)

我在system命令后面的文本周围放置了大括号,但是没有修复它.我也试过括号(),但没有快乐.放入额外的大括号或()在读取文件位置时也会给出"无法识别的转义"错误.

amo*_*mon 6

你在双引号字符串中使用反斜杠:system "... \U ...".这些是特殊的转义码,或者被忽略.在任何一种情况下,你最终得到一个你不想要的字符串.要避免这种情况,请转义所有反斜杠,或使用正斜杠表示路径:C:/foo/bar.即使在Windows上,大多数工具也能正常使用正斜杠.

  • @ ES55嗯,Perl方面的事情现在正在发挥作用.你否可以从命令提示符运行`sas`?您可以搜索错误消息,并且会发现这个"未被识别为内部或外部命令"是一个常见问题,例如,当PATH变量未正确设置时. (3认同)