1

我安装了 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 行,“$ROUGE”附近的 \o{} 上缺少大括号 执行 C:\runROUGE-test1.pl 由于编译错误而中止。

4

2 回答 2

5

产生字符串

c:\data

使用双引号字符串文字,您需要转义斜杠。

"c:\\data"

你还有其他类似的问题。

顺便说一句,您应该始终使用use strict; use warnings;.

于 2013-10-22T17:49:45.887 回答
0

反斜杠在 Perl 字符串中具有特殊含义。要获得文字反斜杠,您需要将反斜杠加倍(正如 ikegami 指出的那样)。

但也值得一提的是,您不需要使用反斜杠。Windows 上的 Perl 也将正斜杠解释为目录分隔符。这不需要加倍,因为它在带引号的字符串中没有特殊含义。

$ROUGE = "c:/ROUGE-1.5.5.pl";

ps 请养成在您的 Perl 代码中添加use strict和的习惯。use warnings

于 2013-10-23T10:21:15.337 回答