Perl可以';t在替换中修改常量项
我使用Perl脚本来删除不必要的标记,这些标记使我正在创建的xml pdf文件膨胀Perl可以';t在替换中修改常量项,perl,pdf,Perl,Pdf,我使用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; fore
#!/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;
#/usr/bin/perl
#严格使用;
使用脏手柄;
my$sourcefile=shift;
my$outputfile=“新建”$源文件;
打开SOURCEFILE,“$SOURCEFILE”或die;
打开OUTPUTFILE“>$OUTPUTFILE”或die;
$flag=0;
foreach$行(){
如果($line=~/\n/){
如果($flag==1){
line=~s/[\t]*\n//gi;
}
$flag=1;
}
elsif($line=~/\n/){
如果($flag==1){
$line=~s/[\t]*\n//gi;
}
$flag=1;
}
elsif($line=~/\n/){
如果($flag==1){
$line=~s/[\t]*\n//gi;
}
$flag=1;
}
否则{
$flag=0;
}
打印输出文件$line;
}
关闭源文件;
关闭输出文件;
我运行此脚本的结果是以下错误
无法在d:\Temp\PDFPatch2.pl第1行修改替换(s//)中的常量项
7,靠近“s/[\t]*\n//gi
由于编译错误,d:\Temp\PDFPatch2.pl的执行被中止
对不起,我对perl了解不多。不要关闭
严格的。
打开警告
这可能会清楚地表明您在第17行输入了内容,并且在$line
前面省略了$
,不要关闭严格的。打开警告
。这可能会清楚地表明您在第17行输入了内容,并在$line
前面省略了$
,直到崩溃,你才看到危险。错误消息不是问题所在。它们是解决这个问题的宝贵路标。只是关掉它们然后寻求帮助有点疯狂。我在前面添加了$
,并打开了“严格”和“警告”。现在我收到以下错误消息。真的很抱歉,但说到perl,我真是个傻瓜。全局符号“$flag”要求在d:\Temp\PDFPatch2.pl第14行显示包名。我已在$flag
和$line
前面添加了my
。这现在声明了一个我可以使用的变量。现在,刚刚收到一条消息,在d:\Temp\PDFPatch2.pl第12行死亡。
打开OUTPUTFILE,“>$OUTPUTFILE”或死亡代码>。将其更改为die$代码>,它会告诉你为什么无法打开文件。好的,我在使用脚本时解决了最后一个问题,我不应该指定文件的完整路径,因为这将导致无效路径,因为单词new将添加到前面。