嗨我正在使用下面的代码来替换日期格式,但我无法弄清楚如何全局更改所有日期。目前,该脚本正确地找到并替换了日期,但它仅对一行中找到的第一个日期执行,但跳过该行的其余部分。因此,如果在同一行内需要更改另一个日期,它将忽略它。我试图使用全球替代,但无济于事。如果有人能给我一个想法,我会非常感激。全球Substitution
use strict;
use Time::Piece();
my $file = $ARGV[0];
open FILE, $file or die;
while (my $line = <FILE>) {
chomp $line;
my ($date) = $line =~ m/([A-Z][a-z][a-z] [ \d]{2} \d{4} \d{2}:\d{2}[AP]M)/;
if ($date eq ''){
print "$line\n";
next;
}
my $new_dt = Time::Piece->strptime($date, '%b %d %Y %H:%M%p')->strftime('%Y-%m-%d %H:%M:%S');
$line =~ s/$date/$new_dt/g;
print "$line\n";
}
close FILE;
print "\n";
编辑:添加例子
输入:2007
5月15日上午12:00,1,0,2003年2月2日下午12:00
输出:
2007 -05-15 00:00:00,1,0,Feb 2 2003 12:00 PM
你能提供一个样本输入和输出吗? –
迭代用'm // g'找到的匹配。 – syck