嗨我正在使用下面的代碼來替換日期格式,但我無法弄清楚如何全局更改所有日期。目前,該腳本正確地找到並替換了日期,但它僅對一行中找到的第一個日期執行,但跳過該行的其餘部分。因此,如果在同一行內需要更改另一個日期,它將忽略它。我試圖使用全球替代,但無濟於事。如果有人能給我一個想法,我會非常感激。全球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