Język Perl został zaprojektowany jako praktyczne narzędzie do analizyplików tekstowych i tworzenia raportów. Jednym z naczelnych haseł jestMożna to zrobić na różne sposoby (ang.There is more than one way to do it – TIMTOWTDI[2] – wymawiane jak Tim Toady). Jednym z podstawowych zamysłów projektu było uczynienie łatwych zadań łatwymi do wykonania, zaś trudnych – wykonalnymi. Wszechstronność Perla pozwala na programowanie w różnych modelach: proceduralnym, funkcyjnym czy obiektowym, chociaż purystom przeszkadza podejście polegające na przedkładaniu wygodyprogramisty nad czystość projektu.
Umożliwia powiązanie systemów istruktur danych, których współpraca nie była przewidywana w momencie projektowania.
Obecnie rozwijany jestRaku[3], który jest nowym językiem programowania, znacznie różniącym się od aktualnej wersji Perla[4]. Najbardziej zaawansowanąimplementacją tego nowego języka jestRakudo(inne języki)[5], który działa, używającmaszyny wirtualnejParrot. Informacje o planowanych zmianach między wersją 5 i 6 są publikowane na stronieperl.com – głównie przez Larry’ego Walla (cykl artykułów „Apocalypse”[6]) i Damiana Conwaya (cykl „Exegesis”).
Rozwój aktualnej wersji języka, czyliPerl 5, jest wciąż kontynuowany. Nowe wersje testowe pojawiają się w miesięcznych odstępach, a większe zmiany są publikowane około raz na rok.
Dostępna jest olbrzymia kolekcja modułów perlowych. Można je pobrać z archiwówCPAN (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.
Chociaż Perl posiada większość cech języka interpretowanego, nie wykonuje ściśle każdego wierszakodu źródłowego po kolei. Program jest najpierw kompilowany dokodu pośredniego (podobnie jakJava); jednocześnie dokonywana jest jego optymalizacja. Możliwe jest skompilowanie programu do kodu pośredniego i używanie go zamiast postaci źródłowej, jednak nadal konieczny jestinterpreter – program wykonujący.
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 wartości elementuzero 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 zmiennej 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”.
$_="Magiczna liczba to 150\n";print;s/\d+/-1/;print;
Wynikiem tego programu jest:
Magiczna liczba to 150Magiczna liczba to -1
Trzeci wiersz przykładu pokazuje użyciewyraż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 dlaC, 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 150Magiczna 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 (literax odextended) oraz by wykonać gotowy tekst (literae odevaluate) jako program w perlu (bez tego wynikiem byłoby:Magiczna liczba to 150 * 2).
$_ – jest to domyślny argument funkcji, w przypadku gdy jest ich więcej, zapisują się w tablicy @_.
$$ – Zawiera PID skryptu.
$< – ID użytkownika, który uruchamia skrypt.
$? – Status wyjścia ostatniego wywołania system().
$. – Numer linii w czytanym pliku.
@ARGV – Jeżeli skrypt zostanie uruchomiony z dodatkowymi parametrami, są one zapisywane na kolejnych miejscach w globalnej tablicy @ARGV. Można się do niej odwoływać tak jak do zwykłych tablic.
↑Tadeusz Sośnierz, Filip Sergot. Cześć, Perl 6!. „Programista”, s. 20–23, październik 2015. ISSN2084-9400. [dostęp 2016-06-08]. Cytat: Perl 6 nie jest, jak nazwa sugeruje, kolejną wersją 25-letniego już Perla. Jest to kompletnie nowy język, porzucający wszelką kompatybilność wsteczną i w zamyśle miał zawsze być alternatywą dla równolegle rozwijanego Perla 5, nie zaś językiem, który ma go zastąpić. (pol.).