Movatterモバイル変換


[0]ホーム

URL:


Przejdź do zawartości
Wikipediawolna encyklopedia
Szukaj

Perl

Z Wikipedii, wolnej encyklopedii
Ten artykuł dotyczy języka programowania. Zobacz też:inne znaczenia tego słowa.
Perl
logo
Pojawienie się

1987

Paradygmat

wieloparadygmatowy (obiektowy,imperatywny,funkcyjny)

Typowanie

dynamiczne

Aktualnawersja stabilna

5.42.0
(3 lipca 2025) [±]

Twórca

Larry Wall

Licencja

GNU GPL,Licencja Artystyczna

Platforma sprzętowa

wieloplatformowy

Platforma systemowa

wieloplatformowy

Książki w Wikibooks
Strona internetowa
Wielbłąd – symbol języka Perl[1]
Półki z książkami o Perlu,FOSDEM 2013

Perlinterpretowany,dynamicznyjęzyk programowaniawysokiego poziomu autorstwaLarry’ego Walla początkowo przeznaczony głównie do pracy z danymi tekstowymi, obecnie używany do wielu innych zastosowań. Wzorowany na takich językach jakC, skryptowe:sed,awk ish, i inne.

Licencja

[edytuj |edytuj kod]

Perl towolne oprogramowanie, dostępne pod licencjamiGPL iartystyczną. Perl jest dostępny dla wielusystemów operacyjnych, lecz jego naturalne środowisko toUnix i jego pochodne. Rośnie popularność Perla w środowiskuMicrosoft Windows. Jako przykład praktycznego zastosowania Perla można podaćoprogramowanieWikipedii, które aż do stycznia 2002 było skryptemCGI napisanym w Perlu.

Filozofia Perla

[edytuj |edytuj kod]

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.

Raku

[edytuj |edytuj kod]

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”).

Do października 2019 r. Raku był nazywany Perl 6.

Zmiany w stosunku do Perla

[edytuj |edytuj kod]

Rozwój Perla 5

[edytuj |edytuj kod]

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.

CPAN

[edytuj |edytuj kod]
 Osobny artykuł:CPAN.

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.

Interpreter

[edytuj |edytuj kod]
 Osobny artykuł:Kod bajtowy Perla.

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.

Kontekst

[edytuj |edytuj kod]

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

ZapisZnaczenie
$azmienna skalarna$a
@azmienna tablicowa@a
$a[0]element 0 zmiennej tablicowej@a, który to element jest skalarem
$#awartość ostatniego indeksu zmiennej tablicowej@a
@$a[0] lub@{$a[0]}dereferencja elementu 0 zmiennej tablicowej@a, który to element jest skalarem będącymreferencją 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
%atablica 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 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”.

Przykłady kodu

[edytuj |edytuj kod]

Przykład:

$_="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).

Zmienne predefiniowane

[edytuj |edytuj kod]

W języku Perl wyróżnia się m.in. następującezmienne predefiniowane:

  • $_ – 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.

Potomkowie Perla

[edytuj |edytuj kod]

Powstało kilka języków wykorzystujących pewne cechy Perla. Najbardziej znane z nich toPHP[13],Ruby iPython.

Zobacz też

[edytuj |edytuj kod]
Zobacz publikację
Perl w Wikibooks
Zobacz multimedia związane z tematem:Perl

Przypisy

[edytuj |edytuj kod]
  1. Jednym z najczęściej kojarzonych symboli języka Perl jestwielbłąd. Skojarzenie to wzięło się z okładki jednej z pierwszych książek o języku Perl wydanych przez wydawnictwoO’Reilly Media, które zastrzega sobie część praw do tego symbolu. Źródło:O’Reilly: The Perl Camel Usage and Trademark Information. [dostęp 2017-08-25]. [zarchiwizowane ztego adresu (2017-08-13)]. (ang.).
  2. There is more than one way to do it na stronieWikiWikiWeb(ang.).
  3. Grupa rozwijająca język Raku w serwisie Github. [dostęp 2016-06-08]. (ang.).
  4. Tadeusz Sośnierz, Filip Sergot. Cześć, Perl 6!. „Programista”, s. 20–23, październik 2015. ISSN 2084-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.). 
  5. rakudo.org(ang.).
  6. Larry Wall: Perl6 – Apocalypse. [dostęp 2016-06-08]. (ang.).
  7. LarryL. Wall LarryL.,Synopsis 1: Overview [online], design.raku.org, 10 sierpnia 2004 [dostęp 2022-12-08] (ang.).
  8. LarryL. Wall LarryL.,Synopsis 2: Bits and Pieces [online], design.raku.org, 20 maja 2009 [dostęp 2022-12-08] (ang.).
  9. LarryL. Wall LarryL.,Synopsis 6: Subroutines [online], design.raku.org, 21 marca 2003 [dostęp 2022-12-08] .
  10. LarryL. Wall LarryL.,Synopsis 12: Objects [online], design.raku.org, 18 sierpnia 2006 [dostęp 2022-12-08] (ang.).
  11. abLarryL. Wall LarryL.,Synopsis 9: Data Structures [online], design.raku.org, 13 września 2004 [dostęp 2022-12-08] (ang.).
  12. Macros, [w:]DamianD. Conway DamianD.,AllisonA. Randal AllisonA.,DanielD. Ruoso DanielD.,LarryL. Wall LarryL.,Synopsis 6: Subroutines, design.raku.org, 21 marca 2003 [dostęp 2022-12-08] .
  13. Historia PHP. [dostęp 2017-08-25].

Linki zewnętrzne

[edytuj |edytuj kod]
Języki programowania
1GL
2GL/
Język drugiej generacji/
Asembler
3GL /
Język trzeciej generacji
wieloparadygmatowe
proceduralne
istrukturalne
historyczne
inne
obiektowe
funkcyjne
edukacyjne
4GL/
Język czwartej generacji/
Język dziedzinowy
Języki zapytań do baz danych
Generatory raportów / stron
Przetwarzanie danych, analiza i raportowanie
5GL/Logiczne
Ezoteryczne
Inne
Źródło: „https://pl.wikipedia.org/w/index.php?title=Perl&oldid=78110852
Kategorie:
Ukryta kategoria:

[8]ページ先頭

©2009-2026 Movatter.jp