搜索特定标记并替换其值

时间:2013-11-02 18:12:59

标签: xml perl file

我需要搜索值为h:mm:ss的标签,并将此值替换为输出文件的h小时,mm分钟和秒数。

我正在努力使用替换语法。现在写我正在阅读一个输入文件。

这是我正在尝试的 -

open(my $fh, '<:encoding(UTF-8)', $filein)
  or die "Could not open file '$filein' $!";

while(<$fh>) {
   chomp $_;
   while ( $_ =~ /<time>\s*([^<]*)\s*<\/time>/g ) {
      chomp $1; 
      push(@time, $1);
   }
}
close($fh);

open(my $wr, '<:encoding(UTF-8)', $filein)
  or die "Could not open file '$filein' $!";

open(FILE, ">$fileout") or die "File not found";

print FILE "average time = 1:00:43\n";

while (my $line = <>){
   $line =~ m!/s/[%d:%02d:%02d]/g/hacker/!; #hacker is my replaced value for testing purpose.
    #$x =~ s/cat/hacker/;
   #s/<PREF>/ABCD/g;
   print FILE $line;
   }
print FILE @time;
close(FILE);

1 个答案:

答案 0 :(得分:1)

试试这个: 假设$newh$newmin$newsec分别是小时,分钟和秒的新值。

$line =~ s/\d+:\d\d:\d\d/$newh:$newmin:$newsec/g;

您还可以将“新”变量合并为一个:

my $new_time="$newh:$newmin:$newsec";
$line =~ s/\d+:\d\d:\d\d/$new_time/g;

说明:

\d+ - 一个或多个十进制数字 : - 只是一个冒号 \d - 正好一位十进制数