Perl, sweet Perl

Jakie to uczucie mrużyć senne oczy, pisząc skrypt w języku, który się ledwo zna? Cudowne i warte niewyspania się.

Pani Całka, nasza Starościna, dostała wyniki ze szmat (u mnie – piąteczka!) w paskudnym formacie:


Nr albumu
 
Nr grupy
 
Nazwisko
 
Imię
 
lab-max40
 
wyklad-max60
 
suma w+l
 
Ocena

I tak student po studencie. Jak widać, trzeba było zrobić z tego jakąś sensowną tabelkę, bo takie dane, ciurkiem prezentowane, to mogą sobie na informatyce analizować. My, elektronicy, nie mamy parserów w mózgach. Postanowiłem zatem zabawić się Perlem, w którym, jak dotąd, niewiele działałem. Do tego dorzuciłem wyrażenia regularne, bo w nich cały urok tego języka. I tak po kilkudziesięciu minutach googlowania i kodowania narodził się potworek:


#!/usr/bin/perl
 
# wczytujemy dane:
@wsio=<STDIN>;
 
# usuwamy puste linie
# oraz "kolumnę" z numerem grupy:
$i=0;
foreach $linia (@wsio) {
  if (!($linia=~/^\n|^.*grup.*|^1\n/)) {
    $lista[$i++]=$linia;
  }
}
 
# zaczynamy tworzyć tabelę:
print "<table>\n";
$offset=0;
for ($i=0; $i<=$#lista; $i++) {
# trzeba obsłużyć błąd przy studencie
# o indeksie numer 123456:
  if ($lista[$i-5]=~/123456\n/) {
    print "<td>???</td>";
    $offset=1;
  }
  if (!(($i+$offset)%7)) {
    print "<tr>";
  }
  print "<td>\n$lista[$i]</td>";
  if (!(($i+1+$offset)%7)) {
    print "</tr>\n";
  }
}
 
print "</table>\n";

który po wywołaniu:

$ ./tabelka.pl <wyniki.txt >wyniki_nowe.html

dał prymitywną i bardzo niesemantyczną (brak sensownych nagłówków) tabelę ;) Musiałem tylko dodać obrzydliwe obejście błędu w danych wejściowych – jeden z kolegów nie miał podanego wyniku sumarycznego.

Heh, mimo wszystko, dumny jestem z siebie. I z Perla.

Komentarzy: 2 do „Perl, sweet Perl“

  1. NetMan komentuje:

    Gratuluje dobrego skryptu…
    rzeczywiście – sposób przedstawienia był tragiczny, ale nas odnalazłem i sie ucieszyłem – reszta mnie nie inteeresowała:P
    Ale jak ten skrypt to zmienił to BRAWO :P

  2. Pani Całka komentuje:

    chciałabym podkreślić, że w takiej właśnie formie otrzymałam te wyniki, co więcej, nie były one jako osobny plik w załączniku tylko w treści maila….

Dodawanie komentarzy

XHTML: Możesz używać tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">