我安装了Strawberry Perl来在Windows中运行rouge程序。但是,当我想运行我的程序时,我收到一条错误消息,您可以在图像上看到:
#!/usr/bin/perl
use Cwd;
$curdir=getcwd;
$ROUGE="c:\ROUGE-1.5.5.pl";
chdir("sample-test");
$cmd="$ROUGE -e c:\data -c 95 -2 -1 -U -r 1000 -n 4 -w 1.2 -a DUC2002- ROUGE.in.26.spl.xml > c:\sample-output\output.out";
print $cmd,"\n";
system($cmd);
chdir($curdir);
错误: 在C:\ runROUGE-test1.pl第7行\ o {}上缺少大括号,靠近“$ ROUGE” 由于编译错误,C:\ runROUGE-test1.pl的执行中止。
答案 0 :(得分:4)
生成字符串
c:\data
使用双引号字符串文字,您需要转义斜杠。
"c:\\data"
您还有其他类似的问题。
顺便说一下,您应该始终使用use strict; use warnings;
。
答案 1 :(得分:0)
反斜杠在Perl字符串中有特殊含义。要得到一个字面反斜杠,你需要加倍反斜杠(正如ikegami指出的那样)。
但是也值得一提的是你不需要使用反斜杠。 Windows上的Perl也将正斜杠解释为目录分隔符。并且不需要加倍,因为它在带引号的字符串中没有特殊含义。
$ROUGE = "c:/ROUGE-1.5.5.pl";
P.S。请养成将use strict
和use warnings
添加到Perl代码的习惯。