Kollat så att dina perlscript visar rätt årtal efter årsskiftet? Bl.a. några av de vanligaste scripten på nätet, Matt Wrights, innehåller buggar som gör att 19100 visas i stället för 2000 (observera att det inte är i Perl buggen finns, utan i de aktuella scripten).
En vanlig missuppfattning när det gäller Perl har nämligen varit att Perls funktioner localtime() samt gmtime() returnerar de två sista siffrorna i årtalet när vad som verkligen returneras är antal år sedan 1900 (under 1900-talet har det ju inte synts någon skillnad). Detta har gjort att en del haft konstruktioner som:
if ($datum > 90 ) {
$datum = "19$datum";
} else {
$datum = "20datum";
}
Något som alltså inte fungerar (i år returnerar dessa rader 19100, nästa år 19101 o.s.v.). Följande hade varit mer korrekt:
$datum = $datum + 1900;
Eller förkortat:
$datum += 1900;
Även en del böcker och onlinekurser har tyvärr lärt ut felaktigheter i detta ämne.
Så för att föregå alla frågor om detta (vilket jag misstänker kommer dyka upp framöver i många forum), så tar jag upp det redan nu.
Om du har något av Matt Wrigts script så finns upprättade sådana numera att ladda ner från hans hemsida:
http://www.worldwidemart.com/scripts/
Mer info om Perl / Y2K samt funktionerna localtime() och gmtime():
http://www.perl.org/phbs/y2k.html http://www.perl.com/pub/doc/manual/html/pod/perlfunc/ localtime.html http://www.perl.com/pub/doc/manual/html/pod/perlfunc/gmt ime.html
Skulle dessa länkar inte hjälpa är man naturligtvis välkommen att vända sig hit för hjälp med att lösa sina Y2K-problem. God fortsättning på det nya årtusendet!! :)
[Komplettering 000103]
För att korrekt få fram tvåsiffriga årtal kan man använda:
$datum = sprintf "%.2d", ($datum % 100);
(Man använder här "modulus" för att plocka ut de sista två siffrorna, d.v.s. resten efter en division med 100 - sprintf används för att fylla på med nollor till vänster så att vi alltid har två siffror).
[Redigerat av Robban den 03 jan 2000]