Perl - 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 pozostaje tę samą czynność powtórzyć 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.
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 # oddzielonych 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
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 wywołano z parametrami!n"; }
Poza przedstawionymi już zwykłymi tablicami istnieją jeszcze tablice asocjacyjne. Zasadniczą różnicą między zwykłą 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
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, proszę 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