Perl.
Co to jest Perl?
Perl to z założenia praktyczny, interpretowany język programowania
przeznaczony przede wszystkim do wykonywania różnych zadań systemowych m.in.
przeszukiwania plików tekstowych, pobierania z nich informacji i generowania
komunikatów na ich podstawie. świetnie nadaje się do pisania skryptów CGI.
Jego autorem jest
Larry Wall
wspomagany oczywiście przez ogromną
liczbę innych programistów.
Perl jest kompletny, stosunkowo łatwy w użyciu oraz wydajny, przypłacając to
może nieco elegancją. Posiada wiele cech języka C, jak również sed, awk i
sh. Programujący w w/w językach nie powinni mieć większych problemów z
opanowaniem Perla. Kompilatory Perla są bezpłatne i dostępne dla wielu
systemów operacyjnych. Większość skryptów jest przenośna.
Archiwum CPAN
zawiera wiele cennych materiałów dotyczących Perla, takich jak kompilatory,
skrypty, biblioteki.
Pierwsza linijka
Pierwsza linijka kodu w języku Perl ma specjalne znaczenie, aczkolwiek nie
jest niezbędna do działania programu. Powinna wyglądać następująco:
#!/usr/bin/perl
ścieżka /usr/bin/perl zależy od konkretnego systemu i należy ją odpowiednio
zmodyfikować, tak aby wskazywała interpreter. Zasadniczo, podobnie jak w
zwykłych skryptach pisanych np. w sh, linie rozpoczynające się od znaku "#"
są ignorowane przez kompilator i pozwalają na umieszczanie własnych
komentarzy wewnątrz programu.
Pierwszy program.
Oto najprostszy program w Perlu wypisujący na ekranie tekst:
#!/usr/bin/perl
print 'Hello World.';
Należy pamiętać o tym, że każdą operację oddzielamy od następnej za pomocą
średnika.
Uruchamianie programu.
Aby uruchomić nasz program, należy zapisać go w zwykłym pliku tekstowym.
Możemy użyć do tego celu jakiegokolwiek edytora. Następnie nadajemy plikowi
odpowiedni atrybut wykonywalności poleceniem: chmod u+x nazwa_pliku.
Uruchamiamy program, wywołując go z linii komend:
nazwa_programu # jeśli znajduje się on
# w katalogu na ścieżce
./nazwa_programu # jeśli nie znajduje się
# w katalogu na ścieżce, ale
# jest w katalogu bieżącym
perl nazwa_programu # podając go jako parametr
# dla interpretera
# (w tym przypadku atrybut
# wykonywalności pliku
# nie musi być ustawiony)
Istnieje jeszcze inny, czasem przydatny sposób uruchamiania programów. Opcja
interpretera -e może być użyta do wprowadzenia pojedynczej linii skryptu,
np. perl -e "print 'Hello World.';". Możliwe jest wielokrotne użycie opcji
-e i budowanie w ten sposób skryptu o wielu liniach, np. perl -e "print
'Hello World. ';" -e "print 'Hello once again.'".
Aby sprawdzić poprawność składni jakiegoś programu, ale nie uruchamiać go,
należy interpreter wywołać z opcją -c.
Inną pomocną i stosunkowo nową w języku opcją interpretera jest -w.
Powoduje ona wypisanie komunikatów dotyczących aktualnie wykonywanego
skryptu. Często dzięki niej możemy odnaleść usterki niezauważone w procesie
kompilacji, a mimo to istotne dla działania programu.
Zmienne i tablice zmiennych.
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.
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
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";
}
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
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
|