Я хотел бы изменить временную метку с помощью Perl regex с минимально возможным кодом. Оригинальный формат временной метки выглядит следующим образом:
2011/12/29 20:19:45
Все, что мне нужно сделать, это преобразовать ее так, чтобы год в начале шел после месяца/даты следующим образом:
12/29/2011 20:19:45
Я смог добиться этого с помощью 3 строк кода ниже. Мне просто интересно, есть ли способ сделать это с меньшим количеством кода. В частности, я пытался отказаться от средней строки, сохраняя $1 в промежуточную переменную, и указать $1 из первой подстановки непосредственно в regex для второй подстановки, но это привело к ошибке: "Use of uninitialized value $1 in concatenation (.) or string."
Если от второй строки нельзя избавиться, то, похоже, что и от этой нельзя избавиться до одной строки?
#my $ts = '2011/12/29 20:19:45'; #input to a subroutine
$ts =~ s/^(\d{4})\///;
my $year = $1;
$ts =~ s/ /\/$year /;