我想在单词中找到一个字符串,并用perl中的另一个字符串替换整个单词。
例如:我有以下字符串。
my $str =
<schedule environment="sit">
<hours>SIT_HR</hours>
</schedule>
<schedule environment="uat">
<hours>UAT_HR</hours>
</schedule>
<schedule environment="prd">
<hours>PRD_HR</hours>
</schedule>
我必须找到* _HR并将其替换为60。
输出:
<schedule environment="sit">
<hours>60</hours>
</schedule>
<schedule environment="uat">
<hours>60</hours>
</schedule>
<schedule environment="prd">
<hours>60</hours>
</schedule>
答案 0 :(得分:0)
您的输入看起来像没有根标记的XML。
我添加了根标记并使用xsh处理了该文件,这是XML::LibXML的包装:
open file.xml ;
for /root/schedule/hours {
if xsh:matches(., '_HR$' ) set . 60 ;
}
save :b ;
答案 1 :(得分:0)
试试这个。我在XML方面表现不佳。但我完成了你期望的输出。
use warnings;
use strict;
open('file',"file.xml");
my @file = <file>;
print @file if grep{s/.{3}_HR/60/g} @file;
在这里,我将file.xml
存储到数组@file
。
grep
用于在数组中找到单词。
然后替换用于替换数组中的sting。