【发布时间】:2012-01-20 01:03:34
【问题描述】:
我想用尽可能少的代码用 Perl 正则表达式重新安排时间戳。时间戳的原始格式如下:
2011/12/29 20:19:45
我需要做的就是转换它,以便前面的年份出现在月份/日期之后,如下所示:
12/29/2011 20:19:45
我可以通过下面的 3 行代码实现这一点。我只是想知道是否有办法用更少的代码来做到这一点。特别是我试图取消将 $1 保存到中间变量中的中间行,并直接在正则表达式中从第一个替换中指定 $1 以进行第二次替换,但这会导致错误:“在连接中使用未初始化的值 $1 ( .) 或字符串。”
如果不能去掉第二行,那好像也不能去掉一行?
#my $ts = '2011/12/29 20:19:45'; #input to a subroutine
$ts =~ s/^(\d{4})\///;
my $year = $1;
$ts =~ s/ /\/$year /;
【问题讨论】:
-
乔治的评论+1。请不要在没有解释的情况下进行降级。这对任何人都没有帮助。