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.
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
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";
}
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
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