我需要搜索值为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);
答案 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
- 正好一位十进制数