Calendar::Japanese::Holiday を利用して以下の様な祝日判定のルーチンをテストしているのですが、なぜか#(1)あるいは#(2)のようにサブルーチン内部で値を明示してやらないと正常動作(祝日判定)しません。
そこでCalendar::Japanese::HolidayのisHolidayルーチンの方に値が正常に渡っていないのかと考え、#(3)のようなチェック用のソースを組み入れてみたりもしたのですが、$year, $mon, $dayそれぞれ正常に値は渡っていました。
どのようにすれば正常動作するようになるのでしょうか?
my %spdate = (#すでに$y、$m、$dにはそれぞれ2012、05、05と値が入っています。
'year' =>$y,
'month' =>$m,
'day' =>$d,
);
$spdate = \%spdate;
&check_date($spdate);
sub &check_date{
my($spdate) = @_;
#($spdate->{year},$spdate->{month},$spdate->{day})=(2012,05,05); #(1)
#my $jpholiday = isHoliday(2012,05,05); #(2)
my $jpholiday = isHoliday($spdate->{year},$spdate->{month},$spdate->{day});
if($jpholiday){ push(@error, 'It is a holidays today'); }
}#end
#Calendar::Japanese::Holiday
#http://search.cpan.org/~kztomita/Calendar-Japane …
sub isHoliday {
my ($year, $mon, $day, $furikae) = @_;
#test #(3)
print "Content-type: text/html; charset=utf8\n\n";
print "$year";
print "$mon";
print "$day";
my $holidays;
if ($year == $Cache_holidays_Year &&
$mon == $Cache_holidays_Month) {
$holidays = $Cache_holidays;# From Cache
} else {
$holidays = getHolidays($year, $mon, 1);
return if not defined $holidays;
# Cache
$Cache_holidays = $holidays;
$Cache_holidays_Year = $year;
$Cache_holidays_Month = $mon;
}
return if !exists $holidays->{$day};
return if (!$furikae && $holidays->{$day} eq $FurikaeStr);
return $holidays->{$day};
}#end
No.1
- 回答日時:
sub &check_date
はおかしくないか?
さておき, 最初の
「すでに$y、$m、$dにはそれぞれ2012、05、05と値が入っています。」
のところ, どうやって値を入れたんでしょうか?
また, 入っている値が
2012, 05, 05
ではなく
2012, 5, 5
だったらどうなりますか?
この回答への補足
>sub &check_date
これはこの質問記載中ののみの誤記載で実際には「sub check_date」となっています。紛らわしくて申し訳ないです。
$y、$m、$dにはプルダウンHTMLからの入力です。他の箇所との絡みで1~9の数字は05のようにあたまに0をつけた2けた数値でやり取りしています。
$y、$m、$dの数値を2012, 5, 5としたら正常に動作しました。
No.2
- 回答日時:
もしかして : chomp
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1桁の日付に0を付ける
-
perlでcheckboxがうまく整理で...
-
JSONで文字列が長い時
-
Application.ScreenUpdating = ...
-
実行時エラー 3020の対策
-
VBAでPDFのコピーとリネームを...
-
VB6で、長い時間かかる処理...
-
メモリをアドレスを直接指定し...
-
dieやPerl自体でエラーが発生し...
-
プルダウンメニューで中央表示
-
C++ APIについて エラーコード...
-
16進の10進変換について
-
実行中の変数の中身をイミディ...
-
Perl メール 初心者
-
<SELECT>タグの折り返し
-
VB2010 のユーザコントロールの...
-
int(input("○○"))の使い方
-
Net::Telnetでタイムアウト時間...
-
auのiPhoneでの受信メールが文...
-
メタタグのキーワードはいくつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報