Perl: Różnice pomiędzy wersjami

Z ToProste
Skocz do: nawigacji, wyszukiwania
m
m (Przekierowanie do PERL)
Linia 1: Linia 1:
'''Perl''' – [[język interpretowany|interpretowany]] [[język programowania]] autorstwa [http://pl.wikipedia.org/wiki/Larry_Wall Larry'ego Walla] początkowo przeznaczony głównie do pracy z danymi tekstowymi, obecnie używany do wielu innych zastosowań. Wzorowany na takich językach jak [[C (język programowania)|C]], skryptowe: [[sed]], [http://pl.wikipedia.org/wiki/AWK awk] i [[powłoka Bourne'a|sh]] oraz na wielu innych.
+
#REDIRECT[[PERL]]
 
+
== Licencja ==
+
Perl to [[Wolne Oprogramowanie|wolne oprogramowanie]], dostępne pod licencjami [[GNU General Public License|GPL]] i [http://pl.wikipedia.org/wiki/Licencja_Artystyczna artystyczną]. Perl jest dostępny dla wielu [[system operacyjny|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 [http://pl.wikipedia.org/wiki/Common_Gateway_Interface CGI] napisanym w Perlu.
+
 
+
== Filozofia Perla ==
+
Perl został zaprojektowany jako praktyczne narzędzie do analizy plików tekstowych i tworzenia raportów. Jednym z naczelnych haseł jest ''Można to zrobić na różne sposoby'' (ang. ''There is more than one way to do it'' – TIMTOWTDI – 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 wygody [[programista|programisty]] nad czystość projektu.
+
 
+
Umożliwia powiązanie systemów i struktur danych, których współpraca nie była przewidywana w momencie projektowania.
+
 
+
== Perl 6 ==
+
Obecnie rozwijany jest '''Perl 6''', który jest nowym językiem programowania, znacznie różniącym się od aktualnej wersji Perla. Najbardziej zaawansowaną implementacją tego nowego języka jest [[Rakudo]], który działa używając [[maszyna wirtualna|maszyny wirtualnej]] [[Parrot]]. Informacje o planowanych zmianach między wersją 5 i 6 są publikowane na stronie [http://www.perl.com perl.com] – głównie przez Larry'ego Walla (cykl artykułów "Apocalypse") i Damiana Conwaya (cykl "Exegesis").
+
 
+
== Rozwój Perla 5 ==
+
Rozwój aktualnej wersji języka, czyli '''Perl 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 ==
+
Dostępna jest olbrzymia kolekcja modułów perlowych.
+
Można je pobrać z archiwów [http://pl.wikipedia.org/wiki/CPAN CPAN] (np. [http://www.cpan.org 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, [[GNU General Public License|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 [[Kod bajtowy|kodu pośredniego]] (podobnie jak [[Java]]); 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 jest [[Interpreter (program komputerowy)|interpreter]] – program wykonujący.
+
 
+
== Kontekst ==
+
Cechą specyficzną Perla jest wykorzystywanie znaków przedrostkowych (jak zresztą wszystkich znaków) w różnych znaczeniach zależnie od kontekstu, np:
+
 
+
{| class="wikitable"
+
|+
+
! Zapis !! Znaczenie
+
|-
+
| <code>$a</code> || [[zmienna skalarna]] <code>$a</code>
+
|-
+
| <code>@a</code> || [[zmienna tablicowa]] <code>@a</code>
+
|-
+
| <code>$a[0]</code> || element 0 zmiennej tablicowej <code>@a</code>, który to element jest skalarem
+
|-
+
| <code>$#a</code> || wartość ostatniego indeksu zmiennej tablicowej <code>@a</code>
+
|-
+
| <code>@$a[0]</code> lub <code>@{$a[0]}</code> || [[dereferencja]] elementu 0 zmiennej tablicowej <code>@a</code>, który to element jest skalarem będącym [[referencja (informatyka)|referencją]] do zmiennej tablicowej (wyrażenie zwraca listę)
+
|-
+
| <code>@a[@b]</code> || lista złożona z elementów tablicy <code>@a</code> o indeksach będącym elementami tablicy <code>@b</code>
+
|-
+
| <code>%a</code> || [[tablica asocjacyjna]] (ang. associative array) lub hash (od implementacji) <code>%a</code>
+
|-
+
| <code>$a{klucz}</code> || wartość elementu o kluczu <code>"klucz"</code> należącego do <code>%a</code>, który to element jest skalarem
+
|-
+
| <code>@a{@b}</code> || lista złożona z wartości znajdujących się w <code>%a</code> o kluczach będących elementami tablicy <code>@b</code> (wyrażenie zwraca listę)
+
|-
+
| <code>@$a{$b[0]}</code> lub <code>@{$a{$b[0]}}</code> || dereferencja wartości należącej do <code>%a</code> o kluczu równym warości elementu [[0 (liczba)|zero]] tablicy <code>@b</code>, która to wartość (elementu <code>%a</code>) jest referencją do zmiennej tablicowej
+
|-
+
| <code>$a->{$b[0]}{$b[1]}</code> lub <code>$a->{$b[0]}->{$b[1]}</code>|| dereferencja zmienniej skalarnej <code>$a</code> będącej referencją do tablicy asocjacyjnej, z której pobrany jest element odpowiadający kluczowi równemu elementowi 0 tablicy <code>@b</code>, następuje jego dereferencja i z powstałej tablicy asocjacyjnej pobrany jest element o kluczu równym elementowi 1 tablicy <code>@b</code>
+
|}
+
 
+
Przez te przedrostki jest on określany czasem jako "fleksyjny język programowania".
+
 
+
== Przykłady kodu ==
+
Przykład:
+
 
+
<source lang="perl">
+
$_ = "Magiczna liczba to 150\n";
+
print;
+
s/\d+/-1/;
+
print;
+
</source>
+
 
+
Wynikiem tego programu jest:
+
 
+
{|
+
||
+
Magiczna liczba to 150
+
Magiczna liczba to -1
+
|}
+
 
+
Trzeci wiersz przykładu pokazuje użycie [[Wyrażenie regularne|wyrażeń regularnych]]. Ponieważ w wierszach 2–4 nie wskazano explicite żadnej zmiennej, operacje prowadzone są na zmiennej <code>$_</code>, domyślnym argumencie wielu funkcji i wyrażeń regularnych (<code>$_</code> 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 (język programowania)|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:
+
 
+
<source lang="perl">
+
$_ = "Magiczna liczba to 150\n";
+
print;
+
s/ (\d+) / $1 * 2 /ex;
+
print;
+
</source>
+
 
+
Wynikiem jest:
+
 
+
{|
+
||
+
Magiczna liczba to 150
+
Magiczna liczba to 300
+
|}
+
 
+
<code>$1</code> to fragment tekstu pasujący do wzorca w pierwszym (tu jedynym) nawiasie a <code>/ex</code> mówi by ignorować wstawiane dla przejrzystości spacje wewnątrz wzorców (litera <code>x</code> od ''extended'') oraz by wykonać gotowy tekst (litera <code>e</code> od ''evaluate'') jako program w perlu (bez tego wynikiem byłoby: <code>Magiczna liczba to  150 * 2</code>).
+
 
+
== Zmienne predefiniowane ==
+
W języku Perl wyróżniamy m.in. następujące [[Zmienna wbudowana|zmienne 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 ==
+
Powstało kilka języków wykorzystujących pewne cechy Perla. Najbardziej znane z nich to [[PHP]], [[Ruby (język programowania)|Ruby]] i [[Python]].
+
 
+
== Zobacz też ==
+
* [[Instalacja PERL |Instalacja PERL w Windows]]
+
 
+
=== Linki zewnętrzne ===
+
* [http://pl.wikipedia.org/wiki/CPAN CPAN]
+
* [http://pl.wikipedia.org/wiki/Parrot Parrot]
+
* [http://pl.wikipedia.org/wiki/Mod_perl mod perl]
+
* [http://pl.wikipedia.org/wiki/APL_(j%C4%99zyk_programowania) APL (język programowania)]
+
* [http://pl.wikipedia.org/wiki/Tcl Tcl]
+
 
+
==== Kursy PERL ====
+
* [http://wieluk.republika.pl/index.html Kurs PERL]
+
* [http://pl.wikibooks.org/wiki/Perl PERL Wikibooks]
+
 
+
 
+
Źródło [http://pl.wikipedia.org/w/index.php?title=Perl&oldid=33418000 Wikipedia]
+
 
+
[[Kategoria:Perl]]
+
[[Kategoria:Open Source]]
+

Wersja z 17:55, 18 cze 2013

Przekierowanie do: