perl 1






PERL(1) Podręcznik programisty perla PERL(1)


NNAAZZWWAA
perl - Praktyczny język ekstrakcji i raportowania

SSKKŁŁAADDNNIIAA
ppeerrll [ --ssTTuuUU ] [ --hhvv ] [ --VV[:configvar] ]
[ --ccww ] [ --dd[:debugger] ] [ --DD[number/list] ]
[ --ppnnaa ] [ --FFpattern ] [ --ll[octal] ] [ --00[octal] ]
[ --IIdir ] [ --mm[--]module ] [ --MM[--]'module...' ]
[ --PP ] [ --SS ] [ --xx[dir] ] [ --ii[extension] ]
[ --ee 'command' ] [ ---- ] [ programfile ] [ argument ]...

Dla ułatwienia dostępu, podręcznik perla został podzielony
na kilka sekcji:

perl(1) Przegląd możliwości Perla (ta sekcja)
perltoc(1) Spis treści dokumentacji
perldata(1) Struktury danych
perlsyn(1) Składnia
perlop(1) Operatory Perla i priorytety
perlre(1) Wyrażenia regularne
perlrun(1) Wywoływanie Perla i opcje
perlfunc(1) Wbudowane funkcje
perlvar(1) Predefiniowane zmienne
perlsub(1) Podprocedury
perlmod(1) Moduły
perlref(1) Referencje
perldsc(1) Wstęp do struktur danych
perllol(1) Struktury danych Perla: listy list
perlobj(1) Obiekty Perla
perltie(1) Obiekty ukryte za prostymi zmiennymi
perlbot(1) Sztuczki OO wraz z przykładami
perldebug(1) Debuggowanie
perldiag(1) Komunikaty diagnostyczne
perlform(1) Formaty
perlipc(1) Komunikacja międzyprocesowa
perlsec(1) Bezpieczeństwo
perltrap(1) Pułapki dla nieuważnych
perlstyle(1) Przewodnik po stylu Perla
perlxs(1) API interfejsu XS
perlxstut(1) Podręcznik XS
perlguts(1) Wewnętrzne funkcje dla tych, którzy robią rozszerzenia
perlcall(1) Konwencje wołania z C
perlembed(1) Jak załączyć Perl do aplikacji C lub C++
perlpod(1) Czysta stara dokumentacja
perlbook(1) Informacje o książkach

(Jeśli masz zamiar przeczytać wszystko za jednym zamachem,
to sugerowana kolejność zredukuje ilość odnośników.)

Dodatkową dokumentację dla modułów perla można znaleźć w
katalogu /usr/local/man/. Część z tego jest udostępniana
standardowo z perlem, lecz znajdziesz tam również moduły
dostawców zewnętrznych. Powinieneś być w stanie je oglądać
swoim programem man(1) po włączeniu odpowiednich katalogów



25/Mar/1996 perl 5.003 1





PERL(1) Podręcznik programisty perla PERL(1)


do plików startowych. Aby dowiedzieć się, gdzie się one
znajdują, napisz:

perl -le 'use Config; print "@Config{man1dir,man3dir}"'

Jeśli katalogami były /usr/local/man/man1 i
/usr/local/man/man3, to będziesz musiał dodać tylko
ścieżkę /usr/local/man do zmiennej środowiskowej MANPATH.
Jeśli były inne, musisz dodać obydwa źródła.

Jeśli z jakiegoś powodu to nie zadziała, możesz użyć
dostarczonego skryptu perldoc(1), który służy do
przeglądania informacji modułowych. Możesz także zmienić
sobie program man.

Jeśli stało się coś dziwnego z twoim programem i nie
jesteś pewien, gdzie szukać pomocy; wypróbuj najpierw
przełącznik --ww. Wskaże on gdzie pojawił się problem.

OOPPIISS
Perl jest językiem interpretowanym, optymalizowanym do
skanowania dowolnych plików tekstowych, wyciągania z nich
informacji i drukowania raportów w oparciu o te dane. Jest
też dobrym językiem dla wielu zadań zarządzania systemem.
Język miał w założeniach być raczej praktyczny (łatwy,
efektywny, kompletny) niż piękny (mały, elegancki,
minimalny).

Perl (wg autora) łączy najlepsze właściwości języków C,
sseedd, aawwkk i sshh, więc osoby zaznajomione z tymi językami nie
powinny mieć z nim problemów. Składnia wyrażeń odpowiada
dość blisko składni C. W przeciwieństwie do większości
narzędzi unixowych, perl nie ogranicza arbitralnie
rozmiaru twoich danych--jeśli masz wolną pamięć, perl może
wessać cały plik jako pojedynczy pojedynczy łańcuch
znakowy. Rekurencja jest nieograniczonej głębokości.
Tabele używane przez tablice asocjacyjne (hasze) rosną
tak, by zachować maksymalną wydajność. Perl używa
wyrafinowanych metod porównywania wzorców do bardzo
szybkiego przeszukania dużej ilości danych. Mimo że jest
optymalizowany do zadań tekstowych, może także zajmować
się danymi binarnymi i tworzyć pliki dbm wyglądające jak
tablice asocjacyjne. Suidowane skrypty perla są
bezpieczniejsze niż programy w C, dzięki mechanizmowi
śledzenia przepływających danych, który eliminuje wiele
głupich dziur w bezpieczeństwie. Jeśli masz problem, który
normalnie wymagałby użycia sseedda lub aawwkk lub sshh, lecz
przewyższa ich właściwości lub musi działać szybciej i nie
chcesz pisać takiej błahostki w C, to perl jest
przypuszczalnie tym, czego szukasz. Jest też wiele
translatorów, umożliwiających konwertowanie skryptów sseedda
i aawwkk na skrypty Perla.

Ale czekaj, jest więcej...



25/Mar/1996 perl 5.003 2





PERL(1) Podręcznik programisty perla PERL(1)


Wersja 5 perla jest właściwie napisana od nowa i daje
następujące rzeczy:

Wiele rozszerzeń używalności
Możliwe jest obecnie pisanie dużo czytelniejszego
kodu perla (nawet w wyrażeniach regularnych). Stare,
tajemnicze nazwy zmiennych mogą być zastąpione
identyfikatorami mnemonicznymi. Komunikaty błędów
dają więcej informacji, a opcjonalne ostrzeżenia
wychwytują wiele pomyłek, które mogą przytrafić się
nowicjuszowi. Kiedy tylko zauważysz jakieś dziwne
zachowanie, spróbuj użyć przełącznika --ww!!! Kiedy
nie zauważysz dziwnych zachowań, także lepiej spróbuj
użyć --ww.

Uproszczona gramatyka
W nowym yacc-u, gramatyka jest połową starej.
Uporządkowano wiele reguł gramatyki. Ilość
zastrzeżonych słów spadła o 2/3. Mimo tego, prawie
wszystkie stare skrypty perla będą działać bez zmian.

Zawężanie leksykalne
Zmienne perla mogą być obecnie deklarowane w obrębie
zasięgu leksykalnego, podobnie jak zmienne "auto" w
C.

Arbitralnie zagnieżdżone struktury danych
Dowolna wielkość skalarna, włączając w to dowolny
element tablicy, może obecnie zawierać odwołanie do
dowolnej innej zmiennej lub podprocedury. Można
łatwo tworzyć anonimowe zmienne i podprocedury. Perl
obsługuje liczniki odwołań za ciebie.

Modularność i reużywalność
Biblioteka perla jest obecnie zdefiniowana
kategoriami modułów, które mogą być łatwo dzielone
między wieloma pakietami. Pakiet może wybierać czy
chce importować całość, czy tylko część interfejsu
modułu. Przez ten sam mechanizm definiowane i
używane są pragmy (tj.dyrektywy kompilatora).

Programowanie zorientowane obiektowo
Pakiet może funkcjonować jako klasa. W prosty sposób
i z niewielką ilością nowej składni, wspierane jest
dynamiczne i wielokrotne dziedziczenie oraz metody
wirtualne. Deskryptory plików mogą być teraz
traktowane jako obiekty.

Osadzalne i rozszerzalne
Perl może być teraz łatwo osadzany w twoich
aplikacjach C lub + i może wołać lub być wywoływanym
przez twoje procedury poprzez udokumentowany
interfejs. Preprocesor Xs powinien umożliwić łatwe
doklejanie procedur C lub + do Perla. Wpierane jest



25/Mar/1996 perl 5.003 3





PERL(1) Podręcznik programisty perla PERL(1)


dynamiczne ładowanie modułów.

Zgodność z POSIX
Ważnym nowym modułem jest moduł POSIX, który daje
dostęp do wszystkich zdefiniowanych w POSIX procedur
i definicji poprzez klasy obiektów.

Konstruktory i destruktory pakietowe
Nowe bloki BEGIN i END dają narzędzia do
przechwytywania kontroli podczas kompilacji pakietu i
po zakończeniu programu. Jako zdegenerowany
przypadek, pracują jak ich odpowiedniki w awk, jeśli
użyjesz przełączników --pp lub --nn.

Wielokrotnie jednoczesne implementacje DBM
Program w perlu może teraz mieć jednoczesny dostęp do
plików DBM, NDBM, SDBM, GDBM i Berkeley DB
równocześnie z tego samego skryptu. W rzeczywistości,
uogólniono stary interfejs dbmopen, umożliwiając
dowiązywanie zmiennych do klas obiektów definiujących
ich metody dostępu.

Definicje podprocedur mogą być obecnie ładowane
automatycznie
W rzeczywistości, mechanizm AUTOLOAD umożliwia
również definiowanie dowolnej arbitralnej semantyki
dla niezdefiniowanych wywołań podprocedur. Nie
odnosi się to wyłącznie do automatycznego ładowania.

Rozszerzenia wyrażeń regularnych
Możesz przekazywać obecnie niezachłanne
kwantyfikatory. Możesz grupować bez tworzenia odwołań
wstecznych. Możesz pisać wyrażenia regularne z
osadzonymi dla czytelności białymi znakami i
komentarzami. Dodano spójny mechanizm
rozszerzalności, który jest wstecznie zgodny ze
starymi wyrażeniami regularnymi.


ŚŚRROODDOOWWIISSKKOO
HOME Używane jeśli nie podano argumentu chdir.

LOGDIR Używane jeśli nie podano argumentu chdir i nie
ustawiono HOME.

PATH Używane w wywoływaniu podprocesów i w
znajdywaniu skryptu, jeśli użyto --SS.

PERL5LIB Oddzielona dwukropkami lista katalogów, w
których należy szukać plików bibliotecznych
perla przed przejrzeniem standardowej
biblioteki i bieżącego katalogu. Jeśli nie
zdefiniowano PERL5LIB, używane jest PERLLIB
Podczas pracy ze sprawdzeniami skaz (taint



25/Mar/1996 perl 5.003 4





PERL(1) Podręcznik programisty perla PERL(1)


checks) (gdy skrypt działa jako setuid, setgid
lub gdy użyto przełącznika --TT), nie jest
używana żadna zmienna. Zamiast tego skrypt
powinien zawierać

use lib "/my/directory";


PERL5DB Komenda używana do dostania się do kodu
debuggera. Jeśli nie jest ustawione, używa

BEGIN { require 'perl5db.pl' }


PERLLIB Oddzielona dwukropkami lista katalogów, w
których perl szuka plików bibliotecznych,
zanim podejrzy bibliotekę standardową i
bieżący katalog. Jeśli zdefiniowano PERL5LIB,
PERLLIB nie jest używane.

Poza tym, perl nie używa innych zmiennych środowiskowych,
nie licząc tego, że udostępnia je uruchamianemu skryptowi
i procesom potomnym. Jednak skrypty pracujące pod suid
dobrze by czyniły, uruchamiając następujące linie przed
dokonaniem czegokolwiek innego, po prostu by być uczciwym:

$ENV{'PATH'} = '/bin:/usr/bin'; # czy co tam potrzebujesz
$ENV{'SHELL'} = '/bin/sh' if defined $ENV{'SHELL'};
$ENV{'IFS'} = '' if defined $ENV{'IFS'};


AAUUTTOORR
Larry Wall <lwall@sems.com>, z pomocą multum innych osób.

PPLLIIKKII
"/tmp/perl-e$$" plik tymczasowy dla komend -e
"@INC" lokacje bibliotek perla 5


ZZOOBBAACCZZ TTAAKKŻŻEE
a2p translator awk na perl

s2p translator seda na perl


DDIIAAGGNNOOSSTTYYKKAA
Przełącznik --ww daje uroczą diagnostykę.

Zobacz stronę perldiag(1) dla szczegółów o diagnostyce
perla.

Błędy kompilacji dają numer linii z błędem oraz wskazanie
kolejnego tokenu lub typu tokenu, który miał być badany.
(W wypadku skryptu przekazanego perlowi przez przełącznik



25/Mar/1996 perl 5.003 5





PERL(1) Podręcznik programisty perla PERL(1)


--ee, każde --ee jest traktowane jako pojedyncza linia.)

Skrypty setuidowane mają dodatkowe warunki, mogące dawać
błędy w rodzaju "Insecure dependency". Zobacz stronę
perlsec(1).

Wspomnieliśmy już, że powinieneś koniecznie rozważyć
użycie przełącznika --ww?

BBŁŁĘĘDDYY
Przełącznik --ww nie jest obowiązujący.

Perl polega na tym, jak twoja maszyna definiuje różne
operacje, takie jak rzutowanie typów, atof()(3) i
sprintf(3). To ostatnie może nawet spowodować coredump
kiedy otrzyma nonsensowne wartości wejściowe.

Jeśli twoje stdio wymaga seeka lub eof między odczytami i
zapisami w danym strumieniu, to tak też jest w perlu. (Nie
tyczy się to sysread() i syswrite().)

Podczas gdy żaden z wbudowanych typów danych nie ma
ostatecznego limitu rozmiaru (poza rozmiarem pamięci),
istnieje wciąż kilka innych ograniczeń: dany identyfikator
nie może być dłuższy niż 255 znaków i żadna ze składowych
ścieżki nie może być dłuższa niż 255 w wypadku gdy używasz
--SS. Wyrażenie regularne nie może się kompilować
wewnętrznie do więcej niż 32767 bajtów.

Zobacz bazę danych błędów perla na
http://perl.com/perl/bugs/.

Raporty o błędach możesz przesyłać pocztą do
perlbug@perl.com (upewnij się, że załączyłeś pełne dane o
konfiguracji jako wyjście programu myconfig, załączanego w
drzewie źródłowym perla). Jeśli udało ci się skompilować
perla, skrypt perlbug(1) z katalogu utils/ może zostać
wykorzystany do pomocy w wysłaniu raportu błędu.

Perl właściwie jest skrótem od Pathologically Eclectic
Rubbish Lister (Patologicznie Eklektyczny Roztrząsacz
Śmieci), ale nie mów nikomu, że tak powiedziałem.

UUWWAAGGII
Mottem Perla jest "Istnieje więcej niż jeden sposób by to
zrobić.". Odgadnięcie ile pozostało jest ćwiczeniem dla
czytelnika.

Trzy główne cnoty programisty to Lenistwo, Niecierpliwość
i Pycha. Sprawdź w "książce z wielbłądem" dlaczego
(L.Wall, T.Christiansen, R.L.Schwartz - Programmming Perl,
O'Reilly & Associates, 1996; wyd.polskie 1999).





25/Mar/1996 perl 5.003 6





Wyszukiwarka

Podobne podstrony:
Perl Zaawansowane programowanie
perl
projekt perl
perl wstep
Perl perlcr
Perl Skrypty
PCkurier 25 perl

więcej podobnych podstron