Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl可以';t在替换中修改常量项_Perl_Pdf - Fatal编程技术网

Perl可以';t在替换中修改常量项

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

我使用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;
#/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将添加到前面。