Perl are o funcție integrată utilă pentru a găsi data și ora curente în scripturile dvs. Cu toate acestea, atunci când vorbim despre găsirea timpului, vorbim despre ora care este setată în prezent pe mașina care rulează scriptul. De exemplu, dacă executați scriptul dvs. Perl pe mașina dvs. locală, ora locală va întoarce ora actuală setată și, probabil, setată la fusul orar curent.
Când executați același script pe un server web, puteți găsi că localtime este oprit de la localtime pe sistemul dvs. de desktop. Serverul ar putea fi într-un alt fus orar sau setat incorect. Fiecare mașină poate avea o idee total diferită despre ce este ora locală și poate fi nevoie de unele ajustări, fie în script sau pe serverul însuși, pentru ca acesta să se potrivească la ceea ce aștepți..
Funcția localtime returnează o listă plină de date despre ora curentă, dintre care unele vor trebui ajustate. Rulați programul de mai jos și veți vedea fiecare element din listă tipărit pe linie și separat de spații.
#! / Usr / local / bin / perl
@timeData = localtime (ora);
print join (", @timeData);
Ar trebui să vezi ceva similar cu acesta, deși numărul ar putea fi foarte diferit.
20 36 8 27 11 105 2 360 0
Aceste elemente ale timpului curent sunt, în ordine:
Deci, dacă revenim la exemplul și încercăm să-l citim, veți vedea că este 27:36:20 pe 27 decembrie 2005, sunt 2 zile trecute duminică (marți) și sunt 360 de zile de la începutul an. Ora de vară nu este activă.
Câteva dintre elementele din tablou pe care le returnează locala sunt puțin incomode de citit. Cine s-ar gândi la anul curent în ceea ce privește numărul de ani din 1900? Haideți să aruncăm o privire la un exemplu care ne clarifică data și ora.
#! / Usr / local / bin / perl
@months = qw (Jan Feb Mar Apr Mai Iun Jul Iul Sep Sep Oct Dec);
@weekDays = qw (Duminică, Luni, Mier, Joi, Vineri, Sâmbătă)
(secundă $, minut $, oră $, zi ziOfMontă, lună $, an $ $ Offset, $ ziOfimă, $ ziOfYear, $ zi de luminăSavings) = localtime ();
$ an = 1900 + $ anAffset;
$ theTime = "$ oră: $ minut: $ secundă, $ săptămână $ Zile [$ ziOfWeek] luni luni [$ lună] $ ziOfMontă, an $";
imprima $ theTime;
Când rulați programul, ar trebui să vedeți o dată și o dată mult mai lizibile ca aceasta:
9:14:42, 28 decembrie 2005
Deci, ce am făcut pentru a crea această versiune mai lizibilă? În primul rând, pregătim două tablouri cu numele lunilor și zilelor săptămânii.
@months = qw (Jan Feb Mar Apr Mai Iun Jul Iul Sep Sep Oct Dec);
@weekDays = qw (Duminică, Luni, Mier, Joi, Vineri, Sâmbătă)
Deoarece funcția localtime returnează aceste elemente în valori cuprinse între 0-11 și, respectiv, 0-6, sunt candidați perfecti pentru un tablou. Valoarea returnată de localtime poate fi utilizată ca adresă numerică pentru a accesa elementul corect din tablă.