#!/usr/bin/perl -w # luettelomaatti2.pl # # Tekijä: Petri Ikonen | petri.ikonen@kuopassa.com | www.kuopassa.com # # Tämä ohjelma lukee ulkoisesta tekstitiedostosta jokaisen # rivin, ja tulostaa ne Web-sivulle luettelona. Mikäli tekstitiedostoa ei # löydy, tai sitä ei saada luettua, tulostetaan Web-sivulle virheilmoitus. # Avattavan tiedoston tiedostonimi: $tiedostonimi = "../musiikki/luettelomaatti_levylista.txt"; # Lokitiedoston tiedostonimi: $loki = "../musiikki/luettelomaatti_lokikirja.txt"; # Listan tyyppi: $luettelo = "ol"; # Luettelorivin tyyppi: $luettelorivi = "li"; # Ylläpidon sähköpostiosoite: $webmaster = "petri.ikonen@kuopassa.com"; # Virheilmoituksen n:o 1 otsikko: $virhe_otsikko = "Luettelotiedostoa avattaessa tapahtui virhe."; # Virheilmoituksen n:o 2 otsikko: $virhe_otsikko2 = "Virhe infotekstin arvossa."; # Virheilmoituksen n:o 3 otsikko: $virhe_otsikko3 = "Lokikirjatiedostoa avattaessa tapahtui virhe."; # Virheilmoituksen n:o 1 kuvaus: $virhe_kuvaus = "Tiedostoa "$tiedostonimi" ei valitettavasti saatu avattua."; # Virheilmoituksen n:o 2 kuvaus: $virhe_kuvaus2 = "Luettelomaatti2:n infotekstille on annettu virheellinen arvo. Vaihtoehtona on joko k (kyllä) tai e (ei). Nyt arvoksi on annettu:"; # Virheilmoituksen n:o 3 kuvaus: $virhe_kuvaus3 = "Tiedostoa "$loki" ei valitettavasti saatu avattua."; # Virhekoodi tiedostoa avattaessa $virhetunnus = "500"; # Näytetäänkö skriptin info (k/e) $info = "e"; # Skriptin virallinen nimi $skriptinnimi = "Luettelomaatti2"; # Skriptin versio $versionro = "2"; # Koodarin, eli Pjotrin, sähköpostiosoite: $koodari = "petri.ikonen@kuopassa.com"; ########## KOODI ALKAA TÄSTÄ ########## print "Content-Type: text/html\n\n"; my $date = `/bin/date`; chomp( $date ); open (TIED, ">>$loki") or virheilmoitus3(500); flock (TIED, $FLOCK_EX); print TIED "$skriptinnimi on suoritettu: $date. Info: $ENV{'REQUEST_METHOD'}, $ENV{'SERVER_PROTOCOL'}\n"; sleep 1; flock (TIED, $FLOCK_UN); close (TIED); # Näytetään virheilmoitus n:o 3 tarpeen vaatiessa sub virheilmoitus3 { print "

$virhe_otsikko3 (Virhekoodi $virhetunnus)

\n"; print "

$virhe_kuvaus3

\n"; print "

Ota tarvittaessa yhteyttä ylläpitoon, sähköpostiosoite on $webmaster.

\n"; die(); } # Muunnetaan infotekstin arvo pieneksi kirjaimeksi, jos esim. K $info =~ tr/A-Z/a-z/; # Infoteksti näytetään tai sitten ei if ($info eq "k") { print "

$skriptinnimi

\n"; print "

Tämä skripti tuottaa muotoilemattoman luettelon annetun tiedoston sisällöstä.

\n"; print "

Skriptin nimi on $skriptinnimi ja sen julkaisuversio on $versionro.

\n"; print "

Palautetta ja kehitysideoita voi lähettää Coodarille sähköpostiosoitteen $koodari.

\n\n"; } elsif ($info eq "e") { print "\n\n"; } # Näytetään virheilmoitus n:o 2 jos infotekstille on annettu jokin muu arvo kuin K tai E else { print "

$virhe_otsikko2

\n"; print "

$virhe_kuvaus2\n$info.\n"; print "

Ota tarvittaessa yhteyttä ylläpitoon, sähköpostiosoite on $webmaster.

\n"; } $tied = "$tiedostonimi"; # Avataan tiedosto ja luetaan se, mutta jos ei aukea niin ilmoitetaan virheestä open(LUKU, $tied) or virheilmoitus(500); # Näytetään virheilmoitus n:o 1 tarpeen vaatiessa sub virheilmoitus { print "

$virhe_otsikko (Virhekoodi $virhetunnus)

\n"; print "

$virhe_kuvaus

\n"; print "

Ota tarvittaessa yhteyttä ylläpitoon, sähköpostiosoite on $webmaster.

\n"; die(); } # Tehdään luettelon alkuosa print "<$luettelo>\n"; # Tiedosto luetaan rivi kerrallaan while ($rivi = ) { # Poistetaan liiat välilyönnit $rivi =~ s/[\s]+/ /g; # Poistetaan välilyönnit luettelorivin lopusta $rivi =~ s/\s+$//; # Muunnetaan "&"-merkit entiteettikoodeiksi $rivi =~ s/&/&/g; # Muunnetaan muitakin erikoismerkkejä entiteettikoodeiksi $rivi =~ s//>/g; $rivi =~ s/€/€/g; $rivi =~ s/--/—/g; $rivi =~ s/"/"/g; $rivi =~ s/ø/ø/g; $rivi =~ s/Ø/Ø/g; $rivi =~ s/ü/ü/g; $rivi =~ s/Ü/Ü/g; $rivi =~ s/ä/ä/g; $rivi =~ s/Ä/Ä/g; $rivi =~ s/ö/ö/g; $rivi =~ s/Ö/Ö/g; # Tulostetaan rivit ja listaelementit print "\t<$luettelorivi>$rivi\n"; } # Tehdään luettelon loppuosa print "\n"; #Suljetaan tiedosto close(LUKU);