Я пытаюсь закодировать Perl Script, который возьмет дату в Pattern, 24 октября 2011 г. и преобразует ее в 10,24,2011.
Для этого я подготовил Hash, которыйбудет иметь название месяца в качестве ключа и числовое значение, представляющее позицию месяца в качестве значения.
Я прочитаю строку ввода, использую регулярное выражение для извлечения названия месяца из указанного выше формата.
Замените название этого месяца значением, которое соответствует месяцу в качестве ключа.
Вот код, который я кодировал до сих пор, но он не работает для меня.
@ массив дат будет иметькаждый элемент в этом формате -> 24 октября 2011 года.
%days=("January",01,"February",02,"March",03,"April",04,"May",05,"June",06,"July",07,"August",08,"September",09,"October",10,"November",11,"December",12);
@output = map{
$pattern=$_;
$pattern =~ s/(.*)\s/$days{$1};
} @dates;
foreach $output (@output)
{
print $output."\n";
}
Вот небольшое объяснение того, что я пытаюсь сделать с этим кодом.
@ output будет иметь новый форматированный массивс именем месяца, замененным соответствующим числовым значением, представляющим его, как определено в хэш-функции.
функция карты используется для преобразования элементов массива на лету.
последовательностьe символов, за которыми следует пробел, является регулярным выражением, используемым для извлечения названия месяца из шаблона, 24 октября 2011 года.
На него будет ссылаться $ 1.
Я ищу соответствующее значение для$ 1 в хэше, $ days {$ 1}