PerlとDate::Dayを使用して、指定された日付を対応する曜日に変換しようとしています。
入力文字列の形式は次のとおりOctober 24, 2011; March 12, 1989; November 26, 1940
です。
上記の入力を解析し、各日付をで受け入れられる形式に変換するスクリプトを作成しましたDate::Day::day()
。
このサブルーチンは、形式の入力を受け入れますmm,dd,yyyy
。私はハッシュを使用してこれを行いました。最近、stackoverflowでこのクエリに関するスレッドを投稿し、他のメンバーの助けを借りて、それを行うことができました。
これが私のスクリプトで、日付に対応する曜日を返すのではなく、日付ごとにERRを返します。
day()サブルーチンに渡されるパラメータの入力形式に問題があるようです。
私が使用しているPerlモジュールに関するその他のドキュメントは次のとおりです。http: //helpspy.com/cm/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;