【发布时间】:2014-11-03 11:21:27
【问题描述】:
我有 Perl 脚本用于删除我正在创建的 xml pdf 文件膨胀的不必要标签
#!/usr/bin/perl
#use strict;
use DirHandle;
my $sourcefile = shift;
my $outputfile = "new" . $sourcefile;
open SOURCEFILE, "$sourcefile" or die;
open OUTPUTFILE, ">$outputfile" or die;
$flag = 0;
foreach $line (<SOURCEFILE>) {
if($line=~ /<\?templateDesigner StyleID aped2\?>\n/) {
if($flag == 1) {
line=~ s/[\t]*<\?templateDesigner StyleID aped2\?>\n//gi;
}
$flag=1;
}
elsif($line=~ /<\?templateDesigner StyleID aped3\?>\n/) {
if($flag == 1) {
$line=~ s/[\t]*<\?templateDesigner StyleID aped3\?>\n//gi;
}
$flag=1;
}
elsif($line=~ /<\?templateDesigner StyleID apcb1\?>\n/) {
if($flag == 1) {
$line=~ s/[\t]*<\?templateDesigner StyleID apcb1\?>\n//gi;
}
$flag=1;
}
else {
$flag=0;
}
print OUTPUTFILE $line;
}
close SOURCEFILE;
close OUTPUTFILE;
我运行此脚本的结果是以下错误。
无法在 d:\Temp\PDFPatch2.pl 第 1 行修改常量项以替换 (s///) 7、靠近“s/[\t]*\n//gi;” d:\Temp\PDFPatch2.pl 的执行因编译错误而中止。
抱歉对perl不太了解。
【问题讨论】:
-
不要关闭
strict。打开warnings。这可能会表明您在第 17 行打错字,并从$line前面省略了$。 -
关闭
strict和warnings就像在没有安全带的情况下在黑暗中驾驶:它不会让驾驶更安全,你只是在撞车之前看不到危险。 -
错误信息不是问题。它们是问题的宝贵路标。只是关掉它们然后寻求帮助有点疯狂。