Piątek 11 Kwiecień 2025r. Godz 00:00:00      
Postów: 251      

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