[Tokyo.pm] 恥ずかしながらしくじりました。
吉野
yoshino @ mrisys.co.jp
2000年 1月 4日 (火) 23:59:29 CST
こんにちは。吉野 です。
こんなことをして、ミレニアム・バグをばら撒いてしまいました。
#__________________________________________________________
# [Subroutine ]CreateYYYYMM
# [Usage ]$yyyymm = &CreateYYYYMM ();
# [Exp.1 ]Define today's year and month
# [Exp.2 ] Y2K Problem will be Clear.
# [Exp.3 ] Return Value to Global parameter "$Corrector::YYYYMM"
# [Created ]Date:1999/02/05,BY:massa,ON:Perl5(Sol)
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$Corrector::YYYYMM;
sub main'CreateYYYYMM
{
my ($ret,$sec,$min,$hr,$dd,$mm,$yy,$week,$days,$isDST);
($sec,$min,$hr,$dd,$mm,$yy,$week,$days,$isDST) = localtime();
if ($yy >70)
{
$yy = "19".$yy;
}
else
{
$yy = "20".$yy;
}
$mm = $mm + 1;
if ($mm < 10)
{
$mm = "0".$mm;
}
$ret = $yy.$mm;
$Corrector::YYYYMM = $ret;
$ret;
}
他で作ったプログラムをコピーして、適当なサブルーチン
を埋め込んでいたのですが、
2000年になると、$yy = 100 になるのですね。
200001 という値がほしいのに、1910001 となってしまい・・・
騒ぎです(泣)
localtime() の年の値の扱いがこうなるとは思いませんでした。
一応実行環境は、
# perl -version
This is perl, version 5.004_04 built for i386-linux
です。
今のところ笑い事で済んでます。
+------------------------------------+
|三菱総合研究所 MRIシステムズ(株) |
|情報技術部 C/S課長代理 吉野 正夫 |
+------------------------------------+
Tokyo-pm メーリングリストの案内