Darbai, mokslai…

Nagi prasidėjo sesija. Be to ir darbai nesibaigia. Tai reiškia, kad
aš čia per daug nesireikšiu kokias porą savaičių.

Beje, prašė manęs šiandien parašyti perlinę programėlę, kuri
išrinktų visas šių metų dienas, kur yra savaitgaliai. Didžiausias
klausėjo nustebimas buvo tas, jog jei pateiki funkcijai
Date::Calc->Day_of_Week() blogai suformuotą datą
(tarkim 20012 metų 15 mėnesio 89 dieną) tai ji nesikeikia. Na,
funkcija tokiu atveju grąžina 0, kai normliai grąžint turi nuo 1 ki 7,
tad jei nori ieškotis errorų, gali juos rast. Matyt tas žmogus visai
Perlo neragavęs (netgi turbūt skriptinių programavimo kalbų irgi
nelabai matęs) kad jį tokie dalykai stebina. Štai kodas (hmmm.. reikia
kažkokį Perlo kodo archyvą kurt ;):

use Date::Calc qw/Day_of_Week/;
my @menesiai = qw/sausio vasario kovo balandžio gegužės birželio
               liepos rugpjūčio rugsėjo spalio lapkričio gruodžio/;
for my $menuo (1..12) {
  for my $diena (1..31) {
    my $d = Day_of_Week(2003, $menuo, $diena);
    if($d == 6 or $d == 7) {
      print($menesiai[$menuo - 1], " $diena\n");
    }
  }
}

Oh, beje turbūt šitas pavyzdys kartu ir įrodo jog Perlo kodas
gali būti ir įskaitomas ;)

4 Comments

  1. bugovas tas tavo scriptas: for my $diena (1..31)

    nevisi gi menesiai turi 31 diena, turejai keleta nuliu, kaip pats sakiai, pamatyt

  2. Kaip tik neturėjau nieko pamatyt. Jei blogai paduota data, tai grąžina nulįš ir nieko nesikeikia. O juk aš tikrinu ir spausdinu tik tais atvejais kai grąžina 6 ar 7.

  3. na jo…bet vat kiek skaichiau knygoje "Samouchitel Perl" tai intervalo f-ja labai idomei veikia. nelabai supratau iki galo kaip jinai ten vartaliojasi ish TRUE i FALSE

  4. Mmmm… prie ko čia intervalai ir TRUE-FALSE?

    Intervalas 1..12 sukuria anonimini masyva su elementais nuo 1 iki 12. Kur čia TRUE-FALSE?

Comments are closed.