使用perl搜索和替换xml中的特定代码
我是Perl新手,我的任务是从目录中的xml文件中替换或删除注释部分(使用perl搜索和替换xml中的特定代码,xml,perl,search,replace,Xml,Perl,Search,Replace,我是Perl新手,我的任务是从目录中的xml文件中替换或删除注释部分() 下面是我的Perl代码 #!/usr/bin/perl use strict; use warnings; my $tag = 'SHORT_DESC'; open my $input_file, '<', 'test.xml' or die $!; open my $output_file, '>', 'test_out.xml' or die $!; my $input; { local $/;
)
下面是我的Perl代码
#!/usr/bin/perl
use strict;
use warnings;
my $tag = 'SHORT_DESC';
open my $input_file, '<', 'test.xml' or die $!;
open my $output_file, '>', 'test_out.xml' or die $!;
my $input;
{
local $/; #Set record separator to undefined.
$input = <$input_file>; #This allows the whole input file to be read at once.
}
$input =~ s/&/@@@/g;
$input =~ s/^- (?=<)//gm;
$input =~ s/<header[^>]*>\K\s*<header[^>]*>//gis;
close $input_file or die $!;
print {$output_file} $input;
close $output_file or die $!;
#/usr/bin/perl
严格使用;
使用警告;
my$tag='SHORT_DESC';
打开我的$input_文件、'test_out.xml'或die$!;
我的$input;
{
本地$/;#将记录分隔符设置为未定义。
$input=;#这允许一次读取整个输入文件。
}
$input=~s/&@@@@g;
$input=~s/^-(?=\K\s*]*>///gis;
关闭$input_文件或die$!;
打印{$output_file}$input;
关闭$output_文件或die$!;
我的XML是
<?xml version = '1.0' encoding = 'UTF-8'?>
<!-- Order details-->
<order>
<Names>
<!-- Names-->
<content>This is dummy content</content>
</Names>
</order>
这是虚拟内容
使用适当的XML处理模块。我喜欢以下内容的包装:
使用适当的XML处理模块。我喜欢在以下方面使用包装器:
使用适当的XML处理模块。我喜欢在以下方面使用包装器:
使用适当的XML处理模块。我喜欢在以下方面使用包装器:
您是否因为特定原因键入了错误的XML注释?为什么要引用
@@
?还有,my$input=do{local$/;}
。此外,您没有使用UTF-8层进行阅读。像这样的文件我不会键入您在文件中声明的注释字面上使用Sinan我的要求是从文件中删除注释行,它是纯xml文件,例如,我更改了代码。您是否出于特定原因键入了错误的xml注释?为什么引用参见@@@@
?另外,my$input=do{local$/;}
。此外,您没有使用UTF-8层进行阅读。像这样的文件我不会键入您在文件中声明的注释字面上使用Sinan我的要求是从文件中删除注释行,它是纯xml文件,例如,我更改了代码。您是否出于特定原因键入了错误的xml注释?为什么引用参见@@@@
?另外,my$input=do{local$/;}
。此外,您没有使用UTF-8层进行阅读。像这样的文件我不会键入您在文件中声明的注释字面上使用Sinan我的要求是从文件中删除注释行,它是纯xml文件,例如,我更改了代码。您是否出于特定原因键入了错误的xml注释?为什么引用参见@@@@
?另外,my$input=do{local$/;}
。另外,您没有使用UTF-8层进行阅读。像这样的文件我不是在键入您在文件中声明注释。我的要求是从文件中删除注释行,它是纯xml文件,例如,我更改了代码。谢谢,您能指导我在哪里包括源代码和目标代码吗旧路径,如何将xsh2模块包含到程序中,可能其他方法可以实现我的任务。@NachiappanR:源目录和目标目录应该指定为脚本的参数。谢谢choroba,你能说我需要包含xsh2模块吗?如果需要,请告诉我过程。即使我使用ppm安装xsh2在中安装xsh2命令提示符,但我面临的错误是无法在@INC中找到XML/XSH2.pm(您可能需要安装XML::XSH2模块)(@INC包含:C:/Perl/site/lib C:/Perl/lib)在searcn.pl第5行。BEGIN失败——编译在hello.pl第5行中止。我希望代码可以工作,但唯一的问题是如何包含模块XSH2,是否有其他方法包含相同的任务?谢谢,您能告诉我在哪里包含源文件夹路径和目标文件夹路径,如何将XSH2模块包含到程序中,可能还有其他方法方法可以实现我的任务。@NachiappanR:源目录和目标目录应该被指定为脚本的参数。谢谢choroba,你能说我需要包含xsh2模块吗?如果需要,请告诉我过程。即使我在命令提示符下使用ppm install xsh2安装xsh2,但我面临的错误是在@INC中找不到XML/xsh2.pm(您可能需要安装XML::XSH2模块)(@INC包含:C:/Perl/site/lib C:/Perl/lib。)在searcn.pl第5行。BEGIN失败——编译在hello.pl第5行中止。我希望代码可以工作,但唯一的问题是如何包含模块XSH2,是否有其他方法包含相同的任务?谢谢,您能告诉我在哪里包含源文件夹路径和目标文件夹路径,如何将XSH2模块包含到程序中,可能还有其他方法方法可以实现我的任务。@NachiappanR:源目录和目标目录应该被指定为脚本的参数。谢谢choroba,你能说我需要包含xsh2模块吗?如果需要,请告诉我过程。即使我在命令提示符下使用ppm install xsh2安装xsh2,但我面临的错误是在@INC中找不到XML/xsh2.pm(您可能需要安装XML::XSH2模块)(@INC包含:C:/Perl/site/lib C:/Perl/lib。)在searcn.pl第5行。BEGIN失败——编译在hello.pl第5行中止。我希望代码可以工作,但唯一的问题是如何包含模块XSH2,是否有其他方法包含相同的任务?谢谢,您能告诉我在哪里包含源文件夹路径和目标文件夹路径,如何将XSH2模块包含到程序中,可能还有其他方法方法可以实现我的任务。@NachiappanR:源目录和目标目录应该被指定为脚本的参数。谢谢choroba,你能说我需要包含xsh2模块吗?如果需要,请告诉我过程。即使我在命令提示符下使用ppm install xsh2安装xsh2,但我面临的错误是在@INC中找不到XML/xsh2.pm(您可能需要安装XML::XSH2模块)(@INC contains:C:/Perl/site/lib C:/Perl/lib。)在searcn.pl第5行。BEGIN失败——编译在hello.pl第5行中止。我希望代码可以工作,但唯一的问题是如何包含模块XSH2,是否有其他方法包含相同的任务?
#! /usr/bin/perl
use warnings;
use strict;
use XML::XSH2; # To handle XML.
use Path::Tiny; # To move files around.
my ($source, $target) = @ARGV;
for my $file (path($source)->children(qr/\.xml$/)) {
xsh "open $file ; delete //comment() ; save";
path($file)->copy($target);
path($file)->remove;
}