* Ot prostogo k slozhnomu *
Prezhde chem pristupit' k posledovatel'nomu oznakomleniyu s
ne znakomym dlya vas yazykom, dolzhen ogovorit'sya i skazat', chto
vse primery da i sam yazyk opisaniyu kotorogo posvyashchena eta kniga
eto Perl versii 5.003 dlya operacionnoj sistemy FreeBSD versii
2.01. Sushchestvuyut realizacii etogo yazyka dlya operacionnyh
sistem OS/2 , MS-DOS i Windows NT no oni nemnogo otstayut po
vozmozhnostyam ot originala, rozhdennogo v nedrah YUniksa.
Primer 1 Vvedite v fajl test1.pl sleduyushchie stroki:
#!/usr/local/bin/perl
# Soderzhimoe fajla test1.pl
print "Nashe Vam s kistochkoj!\n";
A teper' podrobno razberem kazhduyu stroku.
#!/usr/local/bin/perl
Dannaya stroka dolzhna byt' pervoj v lyuboj Pel-programme.
Ona ukazyvanet sistemnomu interpretatoru chto dannyj fajl - eto Pel-programma.
# Soderzhimoe fajla test1.pl
|ta stroka nazyvaetsya kommentariem. Ona vsegda nachinaetsya
simvolom '#' i zakanchivaetsya takim ob®yasneniem chto kak govoril
velikij Hodzha Nasreddin "eto tonkij filosovskij
vopros", a govorya prostym yazykom zdes' mozhno pisat' vse chto ugodno.
Dazhe pozhelanie rukovodstvu. Uzh zdes' ono tochno do nego ne
dojdet.
print "Nashe Vam s kistochkoj!\n";
Samaya poslednyaya nu i konechno glavnaya. Ona prosto vyvodit
na ekran nadpis' "Nashe Vam s kistochkoj!".
Zdes' slovo print - eto komanda "vyvesti". Vse chto v kavychkah - eto simvoly,
\n - perevod stroki i ';' - priznak konca komandy. On obyazatelen.
V odnoj stroke mozhet byt' neskol'ko komand i vse oni dolzhny zavershat'sya
simvolom ';'. Posle nego mozhet byt' simvol '#' - eto znachit ostatok
stroki schitaetsya kommentariem.
Nad etoj strokoj avtoru
prishlos' bol'she vsego polomat' golovu tak kak v nee postoyanno
lezli kakie to strannye "hello", "hello all", "Postroemsya i spasemsya",
"Stroj nashe spasenie" i t.d i t.p.
Esli vy nikogda ne rabotali s Pel, to b®yus' na spor v 10$, chto dannaya
programma srazu u vas ne zarabotaet!
Ne potomu chto ona ne verna, a potomu chto "Nel'zya ob®yat' neob®yatnoe".
Srazu, potom mozhno, da i to chastyami.
Snachalo sdelajte vash fajl test1.pl ispolnyaemym. Dlya etogo vvedite
komandu:
chmod +x test1.pl
Zatem prover'te gde u vas Pel. Dlya etogo vvedite:
which perl
Sistema vam vydast chto to vrode: /usr/bin/perl
Esli: perl: Command not found.
To togda zakrojte knizhku i lozhites' spat'. U vas prosto net Pel ili
on ne ustanovlen. A mne ostaetsya poslat' vas k sistemnomu administratoru
ili k man (dlya perevodchikov- man sokrashchenie ot manual a ne to chto vy podumali).
Teper' prover'te chto by stroka 01 soderzhala to chto vydala komanda which.
Esli sovpalo to vvedite:
test1.pl
i b®s' na 50$ chto i teper' programma ne zarabotaet, tak kak pravil'nej
vvesti:
./test1.pl
Esli ya proigral, to ne radujtes'. Da zhe esli vam udalos' zapustit' programmu
kak test1.pl eto znachit, chto u vas budut nepriyatnosti v budushchem.
Primer 2 Dannaya programma vyvodit na ekran vse vashi sekrety. A imenno fajl /etc/passwd.
#!/usr/local/bin/perl
open(PASS, ")
{
print;
}
close(PASS);
Poyasneniya:
open(PASS, ")
CHitat' po odnoj stroke fajla v peremennuyu po umolchaniyu $_.
{
Otkryt' blok operatorov.
print;
Vyvesti na ekran peremennuyu po umolchaniyu $_
}
Konec bloka.
close(PASS);
Zakryt' fajl. |togo mozhno i ne delat' tak-kak fajl avtomaticheski
zakroetsya posle okonchaniya programmy.
Rezul'tat raboty etoj programmy tot zhe chto i komandy cat /etc/passwd.
Po ekranu probezhali neponyatnye stroki no zato teper' pered vami
otkryty gorizonty Pel programmirovaniya!
Vse posleduyushchie primery budut razvitiem etoj programmy i ona
prevratitsya iz gadkogo utenka v prekrasnogo lebedya (ne generala).
Primer 3 Razdeleneie polej.
#!/usr/local/bin/perl
open(PASS, ")
{
($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':');
print "$login \t $name\n";
}
close(PASS);
Poyasnenie:
($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':');
Prisvoit' ukazannym peremennym polya vhodnoj stroki, schitaya razdelitelem simvol ':'.
print "$login \t $name\n";
Vyvesti login - imya pol'zovatelya i ego opisanie. Polya razdeleny simvolom '\t' - tabulyacii.
Primer 4 Vyvesti imena pol'zovatelej otsortirovannyh po gruppam.
#!/usr/local/bin/perl
open(PASS, "sort -n -t : +3 -4 +0 /etc/passwd|") || die "Fajl ne najden!";
while()
{
($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':');
print "$login \t $gid \t $name\n";
}
close(PASS);
Poesneniya:
open(PASS, "sort -n -t : +3 -4 +0 /etc/passwd|") || die "Fajl ne najden!";
V dannoj stroke ves' fokus! Vhodnym fajlom dlya nashej programmy
stal vyhod komandy sort kotoraya i otsortiruet vhodnye dannye.
Formatirovannyj vyvod.
Nu a teper' napechataem na ekrane vse nashi dannye v udobnoj forme.
#!/usr/local/bin/perl
open(PASS, "sort -n -t : +3 -4 +0 /etc/passwd|") || die "Fajl ne najden!";
while()
{
($login, $pass, $uid, $gid, $name, $home_dir, $shell) = split(':');
write(); # Formatirovannyj yvod dannyh.
}
close(PASS);
exit 0; # Zavershenie programmy
############ Opisanie formy vyvoda ##################
format STDOUT =
Pol'zovatel': ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$name
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$name
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$name
----------------------------------------------------------------------
Login:@<<<<<<<< Uid:@<<< Gid:@<<< Home dir:@<<<<<<<<<<<<<<<<<<<<<
$login, $uid, $gid, $home_dir
----------------------------------------------------------------------
. # |to poslednyaya stroka programmy
Fragment rezul'tata:
Pol'zovatel': Kaluzhskij likero-vodochnyj zavod. Luchshie vodki i
nastojki. Zvonit' tol'ko pered prazdnikom Kostrikovu
Anatoliyu t. 2-23-06,,,
----------------------------------------------------------------------
Login:uucryst Uid:1055 Gid:66 Home dir:/var/spool/uucppublic/
----------------------------------------------------------------------
Pol'zovatel': Torgovyj Dom Dilen,,,
----------------------------------------------------------------------
Login:uudilen Uid:1075 Gid:66 Home dir:/var/spool/uucppublic
----------------------------------------------------------------------
Esli vam interesno uznat' kak rabotaet eta programma, to perevernite
stranicu i nachinite svoe puteshestvie v mire Pel.
ZHelayu udachi!
Last-modified: Thu, 24 Apr 1997 17:43:55 GMT