Я пытаюсь преобразовать данные даты в соответствующие дни недели, используя Perl с Дата :: День .
Входная строка имеет формат: October 24, 2011; March 12, 1989; November 26, 1940
.
Я написал скрипт, который будет анализировать вышеуказанные входные данные и преобразовывать каждую дату в формат, который будет принят Date::Day::day()
.
Эта подпрограмма принимает входные данные в формате mm,dd,yyyy
.Я сделал это с помощью хэшей.Недавно разместил ветку по этому запросу в stackoverflow и с помощью других участников смог это сделать.
Вот мой скрипт, и он возвращает мне ERR для каждой из дат вместо того, чтобы возвращать день недели, соответствующийна сегодняшний день.
Кажется, что-то не так с форматом ввода параметра, передаваемого в подпрограмму day ().
Вот еще документация по модулю Perl, который я использую: http://helpspy.com/c.m/programming/lang/perl/cpan/c06/Date/Day/d_1/
Мне интересно знать, где именно я иду не так.Нужно ли вносить какие-либо изменения в дату, прежде чем передать ее в качестве параметра в подпрограмму day ()?
#!/usr/bin/perl
use Date::Day;
use strict;
use warnings;
my @arr;
print "Enter the string: ";
my $str=<>;
chomp $str;
my @dates= split /; /,$str;
my %days= ("January",1,"February",2,"March",3,"April",4,"May",5,"June",6,"July",7,"August",8,"September",9,"October",10,"November",11,"December",12);
my @output = map {
my $pattern=$_;
$pattern =~ s/(\S*)\s/$days{$1}, /;
$pattern =~ s/\s//g;
$pattern
} @dates;
print &day(11,9,1987); # for test purpose and it returns correct value
foreach $output (@output)
{
chomp $output;
my $result=&day($output);
push(@arr,$result);
}
foreach my $arr (@arr)
{
print $arr."; ";
}
Вывод приведенного выше сценария: ERR;ERR;ERR;