Perl

From Helionica



Perl (Practical Extraction and Report Language) to interpretowany język programowania autorstwa Larrego Walla przeznaczony głównie do pracy z danymi tekstowymi, ale doskonale radzący sobie z wszystkimi potrzebami programisty, czy administratora systemu. Wzorowany na takich językach jak C, skryptowe: sed, awk i sh oraz na wielu innych.

Spis treści

Licencja

Perl to wolne oprogramowanie, dostępne pod licencjami GPL i artystyczną. Perl jest dostępny dla wielu systemów operacyjnych, lecz jego naturalne środowisko to Unix i jego pochodne. Rośnie popularność Perla w środowisku Microsoft Windows. Jako przykład praktycznego zastosowania Perla można podać oprogramowanie Wikipedii, które aż do stycznia 2002 było skryptem CGI napisanym w Perlu.

CPAN

Dostępna jest olbrzymia kolekcja modułów perlowych. Można je pobrać z archiwów CPAN (np. www.cpan.org). Można znaleźć moduły między innymi do zaawansowanych obliczeń matematycznych, dostępu do baz danych czy zagadnień sieciowych. Większość, jeśli nie wszystkie, modułów udostępnianych przez CPAN jest dostępna na zasadach Licencji Artystycznej, GPL lub obydwu.

Interpreter

Chociaż Perl posiada większość cech języka interpretowanego, nie wykonuje ściśle każdego wiersza kodu źródłowego po kolei. Program jest najpierw kompilowany do kodu pośredniego (podobnie jak Java), dokonując jednocześnie optymalizacji. Możliwe jest skompilowanie programu do kodu pośredniego i używanie go zamiast postaci źródłowej, jednak nadal konieczny jest interpreter - program wykonujący.

Perl 6 i Parrot

Obecnie rozwijany jest Perl 6, który będzie działał używając maszyny wirtualnej Parrot.

Co znaczy Perl

W angielskim istnieje inne rozwinięcie skrótu Perl: "Pathologically Eclectic Rubbish Lister" (to chyba coś jak "Patologicznie Eklektyczny Rozgarniacz Liści" a dosłownie "Sortownik Śmieci"). Mówi się, że wynika to z użycia wielu znaków przestankowych w składni języka.

Kontekst

Cechą specyficzną Perla jest wykorzystywanie znaków przedrostkowych (jak zresztą wszystkich znaków) w różnych znaczeniach zależnie od kontekstu, np:

Zapis Znaczenie
$a zmienna skalarna $a
@a zmienna tablicowa @a
$a[0] element 0 zmiennej tablicowej @a, który to element jest skalarem
$#a wartość ostatniego indeksu zmiennej tablicowej @a
@$a[0] lub @{$a[0]} dereferencja elementu 0 zmiennej tablicowej @a, który to element jest skalarem będącym referencją do zmiennej tablicowej (wyrażenie zwraca listę)
@a[@b] lista złożona z elementów tablicy @a o indeksach będącym elementami tablicy @b
%a tablica asocjacyjna (ang. associative array) lub hash (od implementacji) %a
$a{klucz} wartość elementu o kluczu "klucz" należącego do %a, który to element jest skalarem
@a{@b} lista złożona z wartości znajdujących się w %a o kluczach będących elementami tablicy @b (wyrażenie zwraca listę)
@$a{$b[0]} lub @{$a{$b[0]}} dereferencja wartości należącej do %a o kluczu równym warości elementu zero tablicy @b, która to wartość (elementu %a) jest referencją do zmiennej tablicowej
$a->{$b[0]}{$b[1]} lub $a->{$b[0]}->{$b[1]} dereferencja zmienniej skalarnej $a będącej referencją do tablicy asocjacyjnej, z której pobrany jest element odpowiadający kluczowi równemu elementowi 0 tablicy @b, następuje jego dereferencja i z powstałej tablicy asocjacyjnej pobrany jest element o kluczu równym elementowi 1 tablicy @b

Przez te przedrostki jest on określany czasem jako "fleksyjny język programowania".

Przykłady kodu

Przykład:

   $_ = "Magiczna liczba to 150\n";
   print;
   s/\d+/-1/;
   print;

Wynikiem tego programu jest:

   Magiczna liczba to 150
   Magiczna liczba to -1

Trzeci wiersz przykładu pokazuje użycie wyrażeń regularnych. Ponieważ w wierszach 2–4 nie wskazano explicite żadnej zmiennej, operacje prowadzone są na zmiennej $_, domyślnym argumencie wielu funkcji i wyrażeń regularnych ($_ odgrywa rolę analogiczną do zaimka języków naturalnych).

Tłumaczenie na polski to:

   Weź napis "Magiczna liczba to 150\n";
   Wydrukuj go;
   Zamień w nim pierwszy ciąg cyfr na "-1";
   Wydrukuj go;

Co jest bliższe naturalnej wypowiedzi niż spotykane w innych językach nieustanne powtarzanie nazwy zmiennej:

   Niech $message oznacza napis "Magiczna liczba to 150\n";
   Wydrukuj $message;
   Zamień w $message pierwszy ciąg cyfr na "-1";
   Wydrukuj $message;

Podobnie jak dla C, urządzane są zawody w pisaniu nieczytelnego kodu. Urządzane są też zawody polegające na napisaniu jak najkrótszego programu wykonującego dane zadanie (Perl golf).

Nieco bardziej skomplikowany przykład:

   $_ = "Magiczna liczba to 150\n";
   print;
   s/ (\d+) / $1 * 2 /ex;
   print;

Wynikiem jest:

   Magiczna liczba to 150
   Magiczna liczba to 300

$1 to fragment tekstu pasujący do wzorca w pierwszym (tu jedynym) nawiasie a /ex mówi by ignorować wstawiane dla przejrzystości spacje wewnątrz wzorców (litera x od extended) oraz by wykonać gotowy tekst (litera e od evaluate) jako program w perlu (bez tego wynikiem byłoby: Magiczna liczba to 150 * 2).

Potomkowie Perla

Powstało kilka języków wykorzystujących pewne cechy Perla. Najbardziej znane z nich to PHP, Ruby i Python, spośród których Python składnią odbiega zdecydowanie najdalej od Perla.

Zobacz też

Odnośniki zewnętrzne


Artykuł zawiera udostępnione na licencji GNU FDL treści pochodzące w pierwotnej wersji z artykułu Perl w polskiej Wikipedii. Lista autorów.



Bestsellery informatyki