只想将标签(*)之间的数据替换为当前系统时间并保存在文件中。
#to get in HH:MM:SS
sub tim{
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
printf ("%02d:%02d:%02d", $hour, $min, $sec);
}
$b = print tim();
use strict;
open(FILE, "+<abc.txt") || die "File not found";
my @lines = <FILE>;
close(FILE);
my @newlines;
foreach(@lines) {
$_ =~ s/<daycutoff>.*</<daycutoff>$b</g;
push(@newlines,$_);
}
open(FILE, "+<abc.txt") || die "File not found";
print FILE @newlines;
close(FILE);
我已尝试过上述内容,但格式不正确
答案 0 :(得分:-1)
print
语句返回存储在变量$ b中的值。在子例程返回中使用sprintf进行字符串格式化,然后将其存储在$b
中。
sub tim {
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
sprintf ("%02d:%02d:%02d", $hour, $min, $sec);
}
$b = tim();
foreach(@lines) {
$_ =~ s/<daycutoff>\K[^<]*</$b</g;
push(@newlines,$_);
}
请使用XML Parser来解析和操作XML数据。 由于我不知道确切的XML数据,我继续使用正则表达式解决方案。考虑XML::Simple