尝试从parsCit运行这个小的perl程序:


parsCit-client.pl e1.txt
[文件名]第1行的-CSD选项为时已晚


e1.txt在这里:http://dl.dropbox.com/u/10557283/parserProj/e1.txt

我从win7 cmd而不是Cygwin运行程序。

文件名是parsCit-client.pl-整个程序在这里:

#!/usr/bin/perl -CSD
#
# Simple SOAP client for the ParsCit web service.
#
# Isaac Councill, 07/24/07
#
use strict;
use encoding 'utf8';
use utf8;
use SOAP::Lite +trace=>'debug';
use MIME::Base64;
use FindBin;

my $textFile = $ARGV[0];
my $repositoryID = $ARGV[1];

if (!defined $textFile || !defined $repositoryID) {
    print "Usage: $0 textFile repositoryID\n".
    "Specify \"LOCAL\" as repository if using local file system.\n";
    exit;
}

my $wsdl = "$FindBin::Bin/../wsdl/ParsCit.wsdl";

my $parsCitService = SOAP::Lite
    ->service("file:$wsdl")
    ->on_fault(
           sub {
           my($soap, $res) = @_;
           die ref $res ? $res->faultstring :
               $soap->transport->status;
           });

my ($citations, $citeFile, $bodyFile) =
    $parsCitService->extractCitations($textFile, $repositoryID);

#print "$citations\n";
#print "CITEFILE: $citeFile\n";
#print "BODYFILE: $bodyFile\n";

最佳答案

perldoc perlrun中,关于-C开关:


注意:从perl 5.10.1开始,如果在“#!”上使用-C选项,行,它
也必须在命令行上指定,因为标准
在执行perl时,已经建立了流
口译员。您还可以使用binmode()设置I / O的编码
流。


这可能是编译器“为时已晚”的意思。

换一种说法:

perl -CSD parsCit-client.pl

07-28 13:55