Príklady
Príklad 1
(Perl
- čítanie zo súboru)
Program, ktorý otvorí súbor
"subor.txt", v cykle prechádza riadky a vypisuje ich aj s ich poradovým číslom.
#!/usr/local/bin/perl
$file = 'subor.txt'; # meno suboru je ulozene do premennej
open(INFO, $file); # otvorenie suboru
$cislo = 0; # inicializacia pocitadla riadkov
while ($riadok = <INFO>) { # citanie riadkov suboru
++$cislo; # zvysenie pocitadla o 1
print "$cislo $riadok"; # vypis riadku s cislom
}
close(INFO); # zavrie subor
|
Príklad 2
(Perl
- čítanie súboru, funkcia split)
Program, ktorý zo vstupného
súboru "vstup.txt" načíta informácie o zbierke hudobných CD a vypíše
ich na obrazovku.
Každému riadku súboru
zodpovedá jedno CD.
Štruktúra riadku je takáto:
Názov albumu!Meno interpreta!cena
Program má riadok rozdeliť
na 3 časti (rozdeľovníkom je výkričník) a výstup na obrazovku má mať
tvar:
Album=Názov albumu Artist=Meno interpreta Price=cena
Vstupný súbor
"vstup.txt":
Shrek!
The Best Of!Donell Jones!450.50
All That You Can't Leave Behind!U2!600.00
Ladies & Gentlemen!George Michael!520.50
|
#!/usr/local/bin/perl
open(FILE, "<vstup.txt"); # otvori vstupny subor
@lines = <FILE>; # vsetky riadky suboru vlozi do pola,
pricom kazdy riadok je jeden prvok pola
close(FILE); # zavrie subor
foreach (@lines) { # prechadza riadky
chop; # odstrani znak konca riadku
($album, $artist, $price) = (split(/!/)); # rozdeli retazec (riadok) na
3 casti pomocou fcie SPLIT,
kde deliacim znakom je "!"
$album = "" if !defined($album); # ak nie je v subore dana
$artist = "" if !defined($artist); # informacia, do premennych
$price = "" if !defined($price); # sa priradia prazdne stringy
print("Album=$album Artist=$artist Price=$price\n"); # vypise hodnoty premennych
}
|
Príklad 3
(Perl
- súbor, formát výpisu na obrazovku)
Program používa pri výpise
na obrazovku definované formáty. Je definovaný formát pre hlavičku stránky
(názvy stĺpcov Album, Artist, Price) a formát riadkov s informáciami o CD-čkách.
#!/usr/local/bin/perl
################# definicia formatu hlavicky strany #####################
format STDOUT_TOP =
Album Artist Price
------------------------------- ---------------------------- --------
.
################# definicia formatu samotnych dat o CD-ckach ##################
format =
Album=@<<<<<<<<<<<<<<<<<<<<<<<< Artist=@<<<<<<<<<<<<<<<<<<<< Price=@##.##Sk
$album, $artist, $price
.
open(FILE, "<vstup.txt");
@lines = <FILE>;
close(FILE);
foreach (@lines) {
chop;
($album, $artist, $price) = (split(/!/));
$album = "" if !defined($album);
$artist = "" if !defined($artist);
$price = 0 if !defined($price);
write(); # vypise hodnoty premennych, podla definovaneho formatu
}
|
Príklad 4
(Perl
- zápis zo vstupného do výstupného súboru podľa formátov)
Program robí to isté, čo
program 3, len výstup zapisuje do výstupného súboru "vystup.txt".
#!/usr/local/bin/perl
format CD_REPORT_TOP =
Album Artist Price
------------------------------- ---------------------------- --------
.
format CD_REPORT =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<< @##.##Sk
$album, $artist, $price
.
open(FILE, "<vstup.txt");
@lines = <FILE>;
close(FILE);
open(CD_REPORT, ">vystup.txt"); # otvori vystupny subor na ulozenie
vstupu vo formate CD_REPORT
foreach (@lines) {
chop;
($album, $artist, $price) = (split(/!/));
$album = "" if !defined($album);
$artist = "" if !defined($artist);
$price = 0 if !defined($price);
write(CD_REPORT_TOP,CD_REPORT); # vypise hodnoty premennych, podla definovanych formatov
}
close(CD_REPORT); # zatvori vystupny subor
|
Príklad 5
(CGI - metóda GET)
Na spúšťanie CGI scriptov
musíme mať nainštalovaný Apache. Ak ho ešte nemáte, stiahnite si ho odtiaľ:
http://s.ics.upjs.sk/~gotthardova/perl/download/apache.rar
Užívateľ vyplní polia v
HTML formulári.
Stlačením tlačidla typu
SUBMIT sa zavolá metóda GET, ktorá CGI scriptu "p5.pl", pošle
údaje z vyplnených polí.
CGI script musí byť uložený
v adresári Apache/cgi-bin.
V CGI scripte procedúra
ReadParse číta dáta poslané metódou GET, vytvorí HTML stránku s výpisom
týchto údajov.
ReadParse je procedúra knižnice
cgi-lib.pl.
Tú treba uložiť do adresára Perl/lib.
HTML stránka:
<HTML>
<BODY>
<Strong>Pošlite svoje údaje</Strong><br>
<FORM ACTION="http://localhost/cgi-bin/p5.pl" METHOD="GET">
<PRE>
Meno: <INPUT TYPE="text" NAME="meno"><br>
Priezvisko: <INPUT TYPE="text" NAME="priezvisko"><br>
Vyber si farbu: <SELECT NAME=farba>
<OPTION>červená
<OPTION>zelená
<OPTION>modrá
<OPTION>biela
<OPTION>žltá
</SELECT>
</PRE><hr>
<INPUT TYPE="submit" VALUE="Poslať">
</FORM>
</BODY>
</HTML>
|
CGI script
"p5.pl":
#!/usr/local/bin/perl# minimal.cgi
require "cgi-lib.pl"; # vyzaduje sa kniznica
&ReadParse(*input); # nacita hodnoty vsetkych premennych zadanych vo formulari
print "Content-Type: text/html\n\n";
print "<HTML>\n";
print "<BODY>\n";
print "<Strong>Poslal(a) si tieto informácie:</Strong>\n";
print "<hr>\n";
print "Voláš sa <Strong>".$input{'meno'}." ".$input{'priezvisko'}.
"</Strong> a tvoja obľúbená farba je <Strong>".$input{'farba'}."</Strong>.\n";
print "</BODY>\n";
print "</HTML>\n";
|
Príklad 6
(CGI - metóda POST)
CGI script overuje, či číslo,
zadané užívateľom do editovacieho okna, je členom Fibonacciho postupnosti.
Takisto sa požívajú procedúry
knižnice cgi-lib.pl, a to na načítanie vstupu (ReadParse), tlačenie úvodných
znakov HTML (HtmlTop) a iné(PrintHeader, HtmlBot).
HTML formulár používa na
odosielanie údajov metódu POST.
Script zistí, či číslo
zadané na vstupe je Fibonacciho číslo a výpisom je kladná, resp. záporná
odpoveď.
Takisto musí byť aj tento súbor
v adresári Apache/cgi-bin.
CGI script:
Script spustíme v prehliadači
na adrese http://localhost/cgi-bin/p6.pl
#!/usr/local/bin/perl
require "cgi-lib.pl";
&ReadParse(*input);
print &PrintHeader;
print &HtmlTop("Overenie, či zadané číslo je číslom Fibonacciho postupnosti");
print <<KoniecFormularu;
<FORM ACTION="$ENV{'REQUEST_URI'}" METHOD="POST">
Napíš číslo:
<INPUT TYPE="text" SIZE=10 MAxLENGTH=6 NAME="cislo" VALUE="$input{'cislo'}">
<INPUT TYPE="submit" NAME="button" VALUE="Vyskúšaj">
</FORM>
KoniecFormularu
$cislo=$input{'cislo'};
if ($cislo > 0 && $cislo < 1000000){
print "<hr>\n";
$a=1;
$b=2;
while ($b < $cislo){
$c=$b;
$b+=$a;
$a=$c;
}
if ($b == $cislo || $cislo == 1){
print "Číslo <strong>$cislo je</strong> číslom Fibonacciho postupnosti.";
}
else{
print "Číslo <strong>$cislo nie je</strong> číslom Fibonacciho postupnosti.";
}
}
print &HtmlBot;
|
Tento script sa dá rozdeliť
na 2 časti, a to na "vstupnú" stránku s HTML formulárom "p6b.htm",
ktorá prostredníctvom metódy POST posiela údaje CGI scriptu "p6b.pl",
ktorý zistí, či číslo je členom Fibonacciho postupnosti a výsledok zobrazí
v HTML formáte. Súbor "p6b.pl" treba opäť uložiť do adresára Apache/cgi-bin.
|