在perl程序中得到编译错误

时间:2013-10-22 17:06:22

标签: perl

我安装了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的执行中止。

2 个答案:

答案 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 strictuse warnings添加到Perl代码的习惯。