---
title: "Y2K-problem med dina perlscript?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/perl-ruby/18932-y2k-problem-med-dina-perlscript"
topic: "Perl & Ruby"
topic_url: "https://www.webforum.nu/amne/perl-ruby"
author: "Robban"
published: "2000-01-02T00:40:00.000Z"
updated: "2000-01-02T00:40:00.000Z"
replies: 0
views: 407
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/perl-ruby/18932-y2k-problem-med-dina-perlscript"
---

# Y2K-problem med dina perlscript?

## #1 — Robban, 2000-01-02T00:40Z

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/localtime.html)  [http://www.perl.com/pub/doc/manual/html/pod/perlfunc/gmt ime.html](http://www.perl.com/pub/doc/manual/html/pod/perlfunc/gmtime.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\]

Permalänk: https://www.webforum.nu/p/18932

---

Tråden på webben: https://www.webforum.nu/amne/perl-ruby/18932-y2k-problem-med-dina-perlscript
