Next Previous Contents

4. Zmienne i tablice zmiennych.

4.1 Zmienne.

W Perlu korzystanie ze zmiennych zostało maksymalnie uproszczone. Nie trzeba ich tu w żaden specjalny sposób deklarować. Do wszelkich zmiennych skalarnych odwołujemy się, umieszczając przed ich nazwą znak dolara. Przypisanie zmiennej $a wartości liczbowej 123 będzie miało postać:


$a = 123;

Aby przypisać zmiennej odpowiednią wartość łańcuchową, napiszemy pamiętając o apostrofach:


$a = 'xxx';

Wypisywaliśmy już zwykły tekst. Teraz dowiemy się, jak to zrobić ze zmiennymi. Duże znaczenie mają użyte apostrofy.


$a = 'jeden';
$b = 'dwa';
$c = 'trzy';

print $a.' - '.$b.' - '.$c;     # wypisze: jeden - dwa - trzy
print '$a - $b - $c';           # wypisze: $a - $b - $c
print "$a - $b - $c";           # wypisze: jeden - dwa - trzy

Tekst zawarty w pojedynczym apostrofie jest traktowany jak zwykły ciąg znaków. Tekst zawarty w podwójnym apostrofie może zawierać nazwy zmiennych, które zostaną podmienione na ich wartości, jak również specjalne znaki, np. \t (tabulator), \n (nowa linia).

Kompilator rozróżnia wielkie i małe litery ($A to nie to samo co $a).

Nazwy zmiennych dobierane są dowolnie. Mogą nimi być dowolne kobinacje liter i cyfr (poza kilkoma wyjątkami, np. $_) o nieograniczonej długości.

4.2 Tablice zmiennych.

Szerokie zastosowanie w programowaniu znajdują z pewnością tablice zmiennych. Duża wygoda ich użycia w Perlu wynika m.in. z tego, że nie posiadają one określonych rozmiarów, rosną w miarę potrzeb. Aby stworzyć tablicę i zapisać w niej wartości, napiszemy:


@imiona = ("kazik", "tomek", "marek");

Z tak przygotowanej tablicy możemy pobierać poszczególne elementy, a także je zapisywać. Należy pamiętać, że pola tablicy są numerowane począwszy od zera.


$imiona[0]              # tak przedstawiany jest pierwszy element tablicy
$imiona[1] = 'zyzio';   # tak zapisujemy do drugiego pola tablicy

Każdy element tablicy to zwykła zmienna skalarna, dlatego w celu odwołania się do niej używamy znaku dolara, a nie "małpki".

W ten sposób dodajemy do tablicy nowe elementy:


push(@imiona, "kasia");                 # dodanie kolejnego (czwartego)
                                        # elementu do tablicy @imiona
push(@imiona, "kasia", "małgosia")      # dodanie dwóch nowych elementów
                                        # na raz
@damy = ("kasia", "małgosia");
push(@imiona, @damy);                   # dodanie dwóch tablic do siebie

Tak usuwamy ostatni element tablicy i jednocześnie go zwracamy:


$a = pop(@imiona);              # $a będzie zawierać wartość ostatniego,
                                # usuniętego elementu tablicy @imiona

Możliwe jest przyporządkowywanie zmiennym skalarnym tablic. Znowu należy zwrócić uwagę na użycie apostrofów.


$a = @imiona;   # zmienna $a będzie zawierać liczbę elementów tablicy
$a = "@imiona"; # zmienna $a będzie łańcuchem składającym się z
                # kolejnych elementów tablicy @imiona odzielonych spacjami

Numer ostatniego elementu tablicy otrzymujemy dzięki zastosowaniu zapisu:


$#imiona

Możliwe jest ustalanie spodziewanych wielkości tablic przez przypisywanie odpowiednich wartości powyższej zmiennej. Ma to na celu przyspieszenie działania programu.

Pozostała jeszcze kwestia wypisywania zawartości tablic:


print @imiona;          # wypisuje elementy tablicy jednym ciągiem
print "@imiona";        # wypisuje elementy, oddziela je od siebie spacjami
print @imiona."";       # wypisuje ilość elementów tablicy

4.3 Tablica @ARGV.

W specjalnej tablicy o nazwie @ARGV zapisane są wszystkie opcje podane w linii komend przy starcie programu. Aby wypisać pierwszą opcję, napiszemy:


print("$ARGV[0]");

Następujący program zakończy swe działanie odpowiednim komunikatem, jeśli okaże się, iż został wywołany z jakimikolwiek parametrami:


if (@ARGV)
{
        print "Program został wywołany z parametrami!\n";
}

4.4 Tablice asocjacyjne.

Poza przedstawionymi już zwykłymi tablicami istnieją jeszcze tablice asocjacyjne. Zasadniczą różnicą między tablicą a tablicą asocjacyjną jest sposób odwoływania się do poszczególnych ich elementów: w zwykłej tablicy każdemu elementowi odpowiadała liczba, podczas gdy w tablicach asocjacyjnych każdemu elementowi będzie przyporządkowany łańcuch. W odróżnieniu od zwykłych tablic przed nazwami tablic asocjacyjnych stawiamy znak procenta. Przykładowo stworzymy tablicę asocjacyjną zawierającą liczby oznaczające wiek danych osób:


%wiek = ("kazik", 17,
         "tomek", 20,
         "marek", 31);

Aby odczytać interesującą nas informacje z wcześniej przygotowanej tablicy asocjacyjnej, napiszemy:


$wiek{"marek"}          # to wyrażenie zwróci wartość 31

Ponieważ w polach tablicy asocjacyjnej zapisane są zmienne skalarne, do ich odczytu używamy znaku dolara.

Możliwe jest konwertowanie zwykłych tablic do tablic asocjacyjnych i na odwrót:


@tab = %wiek;           # od tej chwili @tab = ("marek", "31", "tomek",
                        # "20", "kazik", "17");
%nowa = @tab            # od tej chwili %nowa jest taką samą tablicą jak
                        # %wiek

4.5 Tablica asocjacyjna %ENV.

Program wykonywany w systemie UN*X może odwoływać się do zmiennych środowiskowych, które często zawierają przydatne informacje. (Aby dowiedzieć się o aktualnie ustalonych zmiennych środowiskowych, należy wydać polecenie: set). Perl standardowo udostępnia nam cały zestaw tych zmiennych. Są one umieszczone w tablicy asocjacyjnej o nazwie %ENV.


print "Ty jesteś $ENV{'USER'}, witam!"; # zmienna środowiskowa USER zawiera
                                        # aktualną nazwę użytkownika


Next Previous Contents