Мои навыки Perl довольно просты, и я пытаюсь преобразовать даты в файле данных, загруженном в скалярную переменную, в четырехзначный год, используя подстановку регулярного выражения (среди прочего).
I 'У нас есть следующее, чтобы добавить 20 ко всем годам.
$data00 =~ s/^D(\d{2})\/(\d{2})\/(\d{2})\n/D$1\/$2\/20$3\n/gm;
Однако даты включают даты до 2000 года.
При поиске решения я наткнулся на параметр / eкоторый сказал, что оценивает замену как код Perl.Однако я не нахожу его во всей документации, с которой столкнулся, и я не уверен, какой будет синтаксис.
Есть ли способ оценить совпадение $ 3 и вывести 20, если $ 3менее 50, чтобы сделать 2000 и 19, если нет, чтобы сделать 1997?Я выбрал 50, потому что это казалось безопасным средним уровнем.
Для иллюстрации, хотя я знаю, что это неверно:
$data00 =~ s/^D(\d{2})\/(\d{2})\/(\d{2})\n/D$1\/$2\/(if($3<50)20 else 19)$3\n/eg;
Является ли / e даже уместным в этом случае?
Примеры строк, извлеченные из огромного текстового файла.
D04/07/97
D04/14/98
D10/06/99
D10/13/05
D03/04/10
D12/09/10
D01/20/11
D12/22/11