漢字交じり文字列からのlocaltimeの求め方
perlのCIGを改造してエラーチェック機能をつけようとしています。
htmlのフォームから「2004年5月16日登録」とか「2005年12月22日削除」といった文字列が送られてくるのですが、ここから数字部分だけ抜き出してlocaltimeに直し、改造前からcgiに備わっている($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);で割り出した数値と比較して例えばif $hikaku>localtime...errorといった形でエラーを返すようにしようとしています。
ここで、フォームから送られたデータから「2004」を抽出するには
@kirokunen = split(/年/,$hiduke);
$nenn = $kirokunen[0]);
「5月」の5を抽出するには2004を抽出した残りを利用して
@kirokugatu = split(/月/,$kirokunen[1]);
$gatu = $kirokugatu[0]);
同様に
@kirokuniti = split(/日/,$kirokugatu[1]);
$gatu = $kirokuniti[0]);
として
$hikaku = timelocal($sec, $min, $hour, $niti, $gatu - 1, $nenn);
としてtimeを求めようとしたのですが、年号だけは抽出できたのに、月や日は、表面上は「5」とか「16」と言った具合にちゃんと数字だけになっているのに、timelocalの式に代入するとinternal server errorになってしまいます。
これは何がいけないのでしょうか?
他の部分の改造は手に負えないので、フォームから送らせるデータの方は直さず、「2004年5月16日登録」の形からtimelocalを求めるにはどうしたらよいのでしょうか?
お礼
す、すごいです。 いとも簡単にできてしました。 $xxxx = $year.$month.$day.$hour.$min; の中で $xxxxをまた年月日に分解することもできるのでしょうか?お願いします。