替换" existing_time" to" current_sys_time" XML标记之间和使用Perl在文件中更新。 (格式为HH:MM:SS)

时间:2014-12-12 11:34:45

标签: regex perl shell perl-module perl-data-structures

只想将标签(*)之间的数据替换为当前系统时间并保存在文件中。

#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);

我已尝试过上述内容,但格式不正确

1 个答案:

答案 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