kurs perl.doc

(54 KB) Pobierz
Wprowadzenie do języka PERL

Wprowadzenie do języka PERL



Krótki wstęp, którego nie warto czytać

    Oglądasz właśnie stronę główną witryny poświęconej wprowadzeniu do języka PERL. Być może dziwisz się dlaczego powstała? Zacznijmy od krótkiej historii. Przed feriami nasz informatyk zadał nam bardzo ciekawą pracę - opracować kurs PERL'a dla początkujących na podstawie informacji zebranych w sieci. I tak się zaczęło. Gdy przeszukiwaliśmy polskie witryny powiązane z hasłem perl - okazało się że nie ma ich dużo, a spory procent tych, co są, jest niekompletna (widocznie ktoś miał duże aspiracje, ale mało wytrwałości). Tak więc postanowiliśmy napisać coś więcej. Czy nam się udało - osądźcie sami.


Co to jest i do czego służy Perl?

    Perl jest językiem programowania należącym do grona języków kompilowanych, lecz programy w nim napisane są przechowywane w postaci źródłowej i kompilowane w momencie wykonania programu przez interpreter, a następnie wykonywane. Dzięki takiemu rozwiązaniu wprowadzenie zmian w kodzie i ich testowanie jest bardzo proste - nie musimy kompilować "ręcznie" tak, jak naprzykład w C++, Javie, czy VB. Istnieje także kompilator Perla pozwalający na tworzenie programów w postaci kodu binarnego, które są wykonywane z pominięciem etapu interpretacji.
    Perl jest jednym z najlepszych języków do pisania nawet bardziej skomplikowanych skryptów zarządzających systemami UNIX'owymi (które powodzeniem mogą zastąpić shell'owe), narzędzi konfiguracyjnych i innych programów ułatwiających pracę (takie było jego pierwotne przeznaczenie), a także do pisania programów CGI (Common Gateway Interface - interfejs służący do komunikacji między serwerem WWW a zewnętrznymi aplikacjami pozwalający na tworzenie interaktywnych serwisów wykorzystujących najprostsze elementy takie jak: liczniki, statystyki, księgi gości; oraz bardzo zaawansowanych do których możemy zaliczyć np.: systemy wyszukiwawcze, bazy danych, itp. Główną zaletą programów wykorzystujących CGI jest to, że są wykonywane po stronie serwera - dzięki temu są niezależnie od przaglądarki i systemu operacyjnego użytkownika). Wykorzystanie Perla w CGI należy do głównych jego zastosowań w serwerach z systemami Microsoft'u i innymi.


Zalety i wady języka Perl

+ Perl ma interpretatory przeznaczone na różne systemy operacyjne, jest więc łatwo jest go przenieść z jednej platformy na drugą
+ Jest zoptymalizowany do pracy z dowolnie długimi tekstami i ciągami danych binarnych
+ Zawiera najelastyczniejsze i najwydajniejsze narzędzia do przetwarzania tekstów
+ Pozwala na pisanie aplikacji obsługujących bazy danych, grafikę i sieć
+ Twórcy Perla chcieli stworzyć język praktyczny (łatwy, efektywny, kompletny) i udało się im to doskonale
+ Przy wszystkich swoich cechach jest wystarczająco szybki, by pisać w nim duże aplikacje
+ Od wersji 5 zawiera możliwość dodania modułów, które rozszerzają jego właściwości
+ Dodano także możliwość wykorzystania referencji, dzięki czemu uzyskuje niektóre właściwości programowania obiektowgo
+ Perl jest łatwy do przyswojenia nawet przez niedoświadczonego programistę
+ Perl ma zapożyczoną skadnię z innych języków programowania, dzięki czemu nie trzeba się go uczyć całkowicie od nowa
+ Napisanie w nim dużego programu może być tak samo proste, jak napisanie małego programiku

- Perl nie należy do języków pięknych (czyli małych, eleganckich i minimalnych)
- Jest kompilowany przed każdym uruchomieniem, co powoduje pewne opóżnienia
- Należy on do języków wyższego poziomu, co oznacza że bardziej trzeba przekształcić kod, by był zrozumiały dla procesora, dlatego np. potrafi wykonać więcej operacji przy wywołaniu się do pojedyńczej funkcji
- Nie nadaje się do pisania wieloprocesowych aplikacji
- Nie może być wykorzystywany do pisania aplikacji, które wykorzystują sterowniki do sprzętu
- Skrypty CGI napisane w Perlu są mniej bezpieczne, niż skrypty języków kompilowanych, ponieważ możliwe jest odczytanie ich źródeł, a przez to łatwiejsze staje się wykorzystanie instniejących w nich dziur przy włamywaniu się do systemu (jest to także ściśle powiązane z konfiguracją serwera)

 

Składnia języka PERL



Wstęp do składni perla

    Na tej stronie znajdziesz informacje wystarczające do napisania prostego programu. Dowiesz się jaka jest prawidłowa składnia języka Perl, jak wstawić komentarze i jak prowadzić operacje na zmiennych. Poznasz także większość operatorów, ich priorytety w wyrażeniach logicznych (o których szerzej mowa w dziale testy i pętle) oraz nauczysz się jak pisać własne procedury i funkcje.


Komentarze w programie

    Kiedy piszesz program, jest on zawsze dla ciebie prosty i zrozumiały. Lecz po jakimś czasie zapomina się co i daczego dany fragment kodu robi - program staje się wtedy nieczytelny. Jeśli musisz wprowadzić w nim jakieś zmiany może to być bardzo uciążliwe. Dlatego zaleca się strosowanie komentarzy - tekstu ignorowanego przez kompilator. W Perlu należy je umieszczać za znakiem # (kombinacja klawiszy Shift + 3). Jaka jest najlepsza reguła ich stosowania? Pozwólmy źródłu programu powiedzieć jak to robimy, a komentarzom dlaczego to robimy, np:

# dobry komentarz - mówi dlaczego wykonujemy działanie:
$V = $s / $t; # obliczamy prędkość pojazdu

# zły przykład - komentarz mówi jak obliczamy prędkość:
$V = $s / $t; # dzielimy drogę $s przez czas $t




Polecenia (wykorzytanie literałów)

    Podstawą każdego języka programownia są literały - należą do nich cyfry lub ciągi znaków, np:

23
-2789
3.1482
5.29e-6
'Hello World' # jeśli literały zawierają inne znaki niż cyfry
# musimy je zamknąć wewnątrz cudzysłowów

    Literały możemy przetworzyć na polecenia, dodając na końcu znak ; (średnik). Polecenia tym różnią się od literałów, że zwracają wartości. Poniżej przedstawione polecenie zwraca ciąg znaków hello World do systemu.

Hello World; # trzeba pamiętać o średniku!




Operatory i operacje na zmiennych

    Polecenia stają się pożyteczne dopiero przy wykorzystaniu zmiennych i operatrów. Zmienną nazywamy coś, co ma wartość którą można zmieniać. W Perlu wszystkie zmienne są zmiennymi skalarnymi, co oznacza że można do nich tak samo wprowadzać liczby czy ciągi znaków (zmienne skalarne zachowują się bardzo podobnie jak zmienne w Visual Basic'u zadeklarowane Dim zmienna as Variant). Każda zmienna zaczyna się od znaku $ (Shift + 4). Nazwy zmiennych mogą składać się tylko z liter i cyfr oraz ze znaku _. Należy zwrócić uwagę na to, że Perl tak jak większość języków programowania rozróżnia małe i duże litery.

$zmienna = "Hello World"; # w tym momencie program tworzy zmienną
# i przypisuje do niej ciąg znaków

$zmienna = 12; # do tej samej zmiennej przypisujemy liczbę

    Operator jest symbolem nakazującym kompilatorowi wykonać jakąś operację, na przykład w powyższym przykładzie operator = przypisuje zmiennej $zmienna wartość polecenia "Hello World"; Obie strony przypisania są nazywane operandami. Operator = oczekuje od operand pewnych właściwości: od prawej, że ma wartość, od lewej, że można jej przypisać wartość. W momencie przypisania całe wyrażenie przyjmuje wartość równą wartości przypisanej do lewego operandu. Dlatego możemy napisać tak:

$a = ($b = "Hello World"); # pobieranie wartości wyrażenia z nawiasu
# Wynik: zmienna $a jest teraz równa
# zmiennej $b, która ma wartość "Hello World"

Powyższe wyrażenie jest równoważne temu:

$b = "Hello World"; # najpierw $b otrzymuje wartość "Hello World"
$a = $b; # potem $a otrzymuje wartość $b

Kolejność wykonywania działań zależy od nawiasów np.

$a = 3;
$b = 5;
$c = 7;
($a = $b) = $c; # Wynik: $a = 7, $b = 3, $c = 7

    Jak już wspomniałem Perl posługuje się zmiennymi skalarnymi, czyli nie zwraca uwagi na różnice między liczbami całkowitymi, zmiennoprzecikowymi i ciągami znaków (inaczej niż w innych językach takich jak C czy Turbo Pascal). W razie potrzeby potrafi on przeprowadzić automatyczną konwersję typów np:

$a = "35"; # $a zawiera ciąg znaków, który przedstawia liczbę
$b = 56; # $b zawiera liczbę
$c = $a + $b; # Wynik: $c = 91, zmienna $a została zmieniona na liczbę,
# potem zsumowana z $b, wynik został zapisany w $c

Jeżeli ze zmiennej zawierającej ciąg znaków Perlowi nie uda się uzyskać liczby, otrzymuje ona wartość 0.

$a = "12"; # $a zawiera liczbę
$b = "text"; # $b zawiera ciąg znaków, który nie jest liczbą
$c = $a + $b; # Wynik: $c = 12, ponieważ Perl nie potrefił (raczej
# słusznie) przerobić $b = "text" na liczbę




Lista operatorów

    W powyższym przykładzie został zastosowany operator dodawania. Powoduje on że polecenie ma wartość sumy dwóch operandów. Wartość polecenia przypisywaliśmy operatorem = do zmiennej $c. W Perlu występuje ich wiele i są o różnym priorytecie. Priorytet decyduje o kolejności wykonywania działań. Działania o wyższym priorytecie są wykonywane w pierwszej kolejności. Jeśli chcemy ją (kolejność) zmienić, musimy użyć nawiasów. Poniżej jest przedstawiona lista najważniejszych operatorów razem z ich krótkimi opisami.

Operatory ++ i --
Są one operatorami zwiększającymi (inkramentacja) lub zmniejszającymi (dekrementacja) wartość danej zmiennej o 1

# --- postinkrementacja ---
$a = 5;
$b = $a++; # przypisanie $a do $b, następnie zwiększenie $a o jeden
# Wynik: $a = 6, $b = 5
# --- preinkrementacja ---
$a = 5;
$b = ++$a; # zwiększenie $a o jeden, następnie przypisanie jej do $b
# Wynik: $a = 6, $b = 6

Uruchamianie skryptów Perla



Wstęp do opisu uruchomienia programów napisanych w Perlu

    Programy perlowe można wykonywać w różnych systemach operacyjnych. Na tej stronie opisaliśmy tylko dwa przypadki: uruchamianie w systemach UNIX i im podobnych (np. Linux), oraz w systemach MS Windows. Dowiesz się także, jak wywołać skrypty Perla jako CGI. Nie ma natomiast w naszym serwisie opisu, jak zainstalować interpretator Perl. Wszystkie informacje dotyczą wersji 5.


Uruchamianie w systemie UNIX

    Program perlowski w systemie unix możemy uruchomić na 2 sposoby, pierwszy z nich polega na wywołaniu interpretatora perl ze ścieżką do skryptu moj_program.pl jako parametr (w [] podane są wyrażenia opcjonalne)

znak_zachety$ [interpretator_path/]perl [program_path/]moj_program.pl
 

Treść polecenia może lub nawet musi zostać zmieniona, jeśli spełnia pewne warunki:
- znak_zachety$ - jest zależny od ustawień powłoki (shell'a), której używasz
- [interpretator_path/] - sciezka_do_interpretatora, może być pominięta jeśli interpretator jest zamieszczony w miejscu wymienionym przez zmienną PATH (ustawienie jej zależy od powłoki. Szczegóły znajdziecie w dokumentacji do danej powłoki
- perl - polecenie wywołujace interpretator, w przypadku niektórych systemów UNIX (np. BSD) należy używać polecenia perl5
- [program_path/] - sciezka_do_programu, może być pominięta jeśli program jest zamieszczony w miejscu wymienionym przez zmienną PATH, lub w katalogu bieżącym
- moj_program - nazwa może być dowolna, proponuję jednak stosowanie prostych nazw (przyda się przy debugowaniu)
- .pl - rozszerzenie nie jest obowiązkowe, stanowi jednak pewną konwencję, i jeśli nie ma żadnych poważnych przeciwskazań, lepiej się do niej dostosować

Drugą, alternatywną metodą uruchomienia skryptu jest wpisanie jego nazwy.

znak_zachety$ moj_program.pl

Jest to możliwe przy spełnieniu następujących warunków:
- Pierwsza linia programu musi zawierać kod

#!sciezka_do_interpretatora/perl

- Program musi mieć ustawione prawa do wykonania co uzyskujemy poleceniem

znak_zachety$ chmod a+x moj_program.pl

- Zmienna powłoki PATH musi zawierać ścieżkę do bierzącego katalogu, jeśli nie, to skrypt wywołujemy poleceniem

znak_zachety$ ./moj_program.pl


    Programy napisane w perlu, uruchamiane jako CGI, działają podobnie jak uruchomione z powłoki (tzn. z linii poleceń). Sprawę komplikuje jednak serwer WWW, który musi wiedzieć, że dany program, ma wykorzystywać po uruchomieniu interfejs CGI. Uzyskuje się to umieszczając go w katalogu /cgi-bin/. Następną komplikacją jest ustawienie praw dostępu (polecenie chmod) tak, by serwer WWW mógł go uruchomić. Należy także sprawdzić, czy pierwsza linia programu wskazuje na interpretator perla (jest to jeden z najczęstszych błędów u początkujących webmasterów).


Uruchamianie w systemach Win 9x/NT

    By uruchomić program napisany w Perlu w systemach Windows, należy zainstalować najpierw jego interpretator, który możecie pobrać z serwera www.activestate.com. Znajdziecie tam również instrukcję dotyczącą jego instalacji i dokumentację do niego. Wywołanie programu perlowskiego z linii poleceń wygląda mniej więcej tak:

C:\>[C:\][perl_path\]perl.exe [D:\][program_path\]moj_program.pl

Gdzie:
- C:\> - systemowy znak zachęty
- [C:\],[D:\] - odpowiednie dyski
- [perl_path] - katalog w którym znajduje się plik perl.exe, może być pominięty
jeżeli jest bieżący lub wyszczególniony w zmiennej PATH (zmienną ustawia się w autoexec.bat poleceniem
PATH=C:\ścieżka_do_perla\;"%PATH%")
- [program_path] - katalog w którym znajduje się nasz program (ten który chcemy wykonać :)
- moj_program.pl - nazwa programu, który chcemy wykonać
    W systemach Windows nie jest wymagana pierwsza linia programu (inaczej jest w UNIX'ach), jednak jej istnienie nie powoduje żadnych błędów - jest traktowana jak komentarz.
    By uruchomić program jako CGI, musi on być skojarzony z serwerem WWW (opis jak to zrobić powinien znajdować się w dokumentacji). Następnym warunkiem jest to, by katalog w którym się znajduje, pozwalał na wykonanie skryptu przez serwer. Należy także skojarzyć rozszerzenie *.pl z interpretatorem perla. Można to zrobić ręcznie w rejestrze, lub poprzez Eksploator Windows: w menu Widok, podmenu Opcje, zakładka Typy Plików i przycisk Nowy Typ.


Opcje programu Perl 5

    Poniżej wymienionych opcji można używać podczas wywołania programu z linii poleceń, lub (systemy *UNIX) w linii, gdzie podajemy ścieżkę do interpretatora. Pierwszy sposób ma wyższy priorytet. Na niekorzyść drugiego sposobu przemawia także fakt, że nie da się wywołać przy pomocy niego niektórych opcji. Więcej szczegółów dowiedzieć się można z dokumentacji Perla w części perlrun.

-h # wyświetla pomoc dotyczącą parametrów uruchamiania programu

-c # kompilacja programu w celu wykrycia błędów, bez jego
# wykonania

-d[:debugger] # uruchamia skrypt pod danym debuggerem

-e 'komenda' # pozwala na wykonanie kodu zawartego w linii poleceń

-Ikatalogi # określa katalogi, w których są moduły i pliki źródłowe
# wykorzystywane w programie (może być ich kilka)

-l[liczba] # w systemie ósemkowym określa znak końca linii

-m [-]moduł # wywołuje [niewywołuje] określony moduł

-P # "przepuszcza" program przez preprocesor języka C
# przed kompilacją

-s # pozwala na użycie dodatkowych opcji po nazwie skryptu

-S # powoduje wyszukiwanie plików również według zmiennej
# środowiskowej

-T # uniemożliwia wykonanie operacji związanych z systemem
# plików lub systemem operacyjnym, co powoduje zwiększenie
# bezpieczeństwa programów CGI

-v # wyświetla aktualnie używaną wersję interpteratora Perl

-V[:zmienna] # wyświetla informację o konfiguracji na temat określony
# przez zmienną

-w # powoduje wyświetlenie dodatkowych ostrzeżeń przy
# debugowaniu programu. Może powodować problemy w skryptach
# wykorzystywujących interfejs CGI (przez serwer WWW)

 

Zgłoś jeśli naruszono regulamin