Przechodzac do petli dojdziemy do niektorych zmiennych magicznych jak to niektorzy nazywaja. Sa to po prostu zmienne kontekstowe, ktore powoduja ogromne zamieszanie zazwyczaj, choc tak na prawde nie sa straszne - wystarczy nieco myslec nad tym co sie robi...
Petle
Tutaj generalnie Perl nie rozni sie wiele od innych jezykow...
Kod:
for ($l=0;$l<=100;$l++) {
prin "L = $l\n";
}
Kod:
$l=0;
while ($l<=100) {
print "L = $l\n";
$l++;
}
tu zaczniemy nieco wiecej 'magii'
Kod:
@liczby = (1..10);
foreach $liczba (@liczby) {
print "L = $liczba\n";
}
Sprawdzanie warunkow odbywa sie standardowo:
Kod:
$l=0;
if ($l >5) {
print ">5\n";
} elsif ($l == 0) {
print "zero";
} else {
print "<5\n";
}
Wazne jest to, ze = to przypisanie wartosci, == to porownanie! Czesty blad to zrobienie czegos takiego:
Kod:
if ($zmienna = 5) {
# cokolwiek
} else {
# inne cokolwiek
}
Oczywiscie efekt jasny - zawsze test zwroci wartosc prawda i wykona sie tylko pierwsza czesc - nigdy nie wykona sie kod w sekcji else.
Nieco magii - enigmatyczne zmienne
To jest to czego ludzie sie boja... bo zwyczajnie nie rozumieja co to jest. Nie wiem jak to wytlumaczyc prosto - postarajm sie, wiec jakby bylo dalej cos watpliwe to pytac.
Zmienne o ktorych bedziemy mowic to: $_, @_, @ARGV, $$ oraz cala kategoria innych (to zostawie do doczytania zainteresowanym - na razie nie bedziemy nic wiecej uzywac - w sumie niezbyt czesto sie innych uzywa z tego co wiem). To sa zmienne domyslne, ktorych sie nie deklaruje. Nie sa to zimienne srodowiskowe - powiedzmy ze cos podobnego. Cos jak 'runtime variables'.
Kod:
for (1..9) { print };
To jest calutki kod - wysiwietli nam od cyfry od 1 do 9 - pytacie dlaczego?
Ten kod omzna tez zapisac jako:
Kod:
foreach $_ (1..9) {
print "$_";
}
$_ jest zmienna domyslna w wielu operacjach. Jesli na przyklad czytamy plik tekstowy (przyklady beda w nastepnych czesciach) to ta zmienne bedzie domyslna (jesli nie podamy jawnie innej zmiennej) ktora bedzie przechowywac wczytane linie.
Kolejna taka zmienna to @_, ktora jak widac jest tablica... a oto przyklad zastosowania:
Kod:
iloczyn(5,4);
sub iloczyn {
my $a = $_[0];
my $b = $_[1];
print "Iloczyn $a i $b wynosi ", $a*$b;
}
Jest to lista parametrow przekazanych do funkcji. Mozna tez zapisac ten sam kod jako:
Kod:
sub iloczyn {
my ($a,$b) = @_;
#reszta kodu
Jesli jednak podamy 3 parametry i tak program przyjmie 2... a trzeci parametr zignoruje.
Dosc istotne jest to, ze zmiennej @_ nie mozemy nadpisac wewnatrz funkcji. To sa stale parametry. Jesli chcemy je zmienic musimy przypisac do zmiennych i pozniej mozemy zmienic wartosc zmiennej ktora stworzylismy. Zmienna @_ lub $_[numer] jest READ-ONLY!
c.d.n.