Я бы хотел перестроить временную метку с помощью регулярного выражения 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 /;