我在一個文件夾「c:\ srini \ perl \ in \」中有多個XML文件...所有這些文件的結構都是一樣的......我需要在每個XML中搜索兩個標籤,並且如果該TAG值在其中包含「@@@」......則必須替換爲「&」...它必須檢查兩個標籤值SHORT_DESC和XXX_NAME ...如果任何一個變量值中有「@@@」 ..它必須與「&」取代.. 下面是XML文件....使用perl替換一個文件夾中的多個XML文件的值
<TOPHEADER>
<HEADER>
<NAME>ABC LTD</NAME>
<SHORT_DESC>ABC COMPY @@@ LTD</SHORT_DESC>
<XXX_NAME>ABC COMPANY FOR XXX AND YYY </XXX_NAME>
</HEADER>
<HEADER>
<NAME>XYZ LTD</NAME>
<SHORT_DESC>XYZ COMPY @@@ LTD</SHORT_DESC>
<XXX_NAME>XYZ COMPANY FOR @@@</XXX_NAME>
</HEADER>
<HEADER>
<NAME>DEF LTD</NAME>
<SHORT_DESC>DEF COMPY AND LTD</SHORT_DESC>
<XXX_NAME>DEF COMPANY FOR @@@</XXX_NAME>
</HEADER>
</TOPHEADER>
我用下面的代碼來替換單個文件的標籤值..但想知道是否有更好的方法來處理多個文件....
open (my $input_file, '<', 'c:\srini\perl\in\test1.xml') or die "unable to open $input_file $!\n";
open (my $output_file, '>', 'c:\srini\perl\in\test1_out.xml') or die "unable to open $output_file $!\n";
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;
print {$output_file} $input;
close $input_file or die $!;
close $output_file or die $!;
也有一種方法,我們可以編輯同一個文件,並替換值..我不希望用_out擴展名創建新文件... – Srini 2013-05-09 07:10:16