perl(1) Praktyczny język ekstrakcji i raportowania

SKŁADNIA

perl  -sTuU ] [ -hv ] [ -V[:zmienna_conf] ]

    [ -cw ] [ -d[:debugger] ] [ -D[numer/lista] ]
    [ -pna ] [ -Fwzorzec ] [ -l[octal] ] [ -0[liczba_ósemkowa] ]
    [ -Ikatalog ] [ -m[-]moduł ] [ -M[-]'moduł...' ]
    [ -P ] [ -S ] [ -x[katalog] ]
    [ -i[rozszerzenie] ] [ -e 'polecenie' ] [ -- ] [ plik_z_programem ] [ argument ]...

Jeśli jesteś nowicjuszem Perla, powinieneś zacząć od perlintro(1), zawierającego ogólne informacje dla początkujących i dostarczającego informacji mogących pomóc ci nawigować po reszcie szczegółowej dokumentacji Perla.

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

Przegląd


perl(1) Przegląd możliwości Perla (ta sekcja)
perlintro(1) Wstęp do Perl dla początkujących
perltoc(1) Spis treści dokumentacji


Przewodniki

    perlreftut(1)          Szybkie wprowadzenie do referencji
    perldsc(1)             Wstęp do struktur danych
    perllol(1)             Struktury danych Perla: listy list

    perlrequick(1)         Szybkie wprowadzenie do wyrażeń regularnych
    perlretut(1)           Podręcznik wyrażeń regularnych

    perlboot(1)            Podręcznik OO Perla dla początkujących
    perltoot(1)            Podręcznik OO Perla, część 1
    perltooc(1)            Podręcznik OO Perla, część 2
    perlbot(1)             Sztuczki OO wraz z przykładami

    perlstyle(1)           Przewodnik po stylu Perla

    perltrap(1)            Pułapki dla nieuważnych
    perldebtut(1)          Przewodnik debuggowania Perla

    perlfaq(1)             Często zadawane pytania
      perlfaq1(1)          Ogólne pytania dotyczące Perla
      perlfaq2(1)          Uzyskiwanie Perla i nauka
      perlfaq3(1)          Narzędzie programistyczne
      perlfaq4(1)          Manipulowanie danymi
      perlfaq5(1)          Pliki i formaty
      perlfaq6(1)          Wyrażenia regularne
      perlfaq7(1)          Sprawy związane z językiem
      perlfaq8(1)          Oddziaływanie z systemem
      perlfaq9(1)          Sieć

Reference Manual

    perlsyn(1)             Składnia
    perldata(1)            Struktury danych
    perlop(1)              Operatory Perla i priorytety
    perlsub(1)             Podprocedury
    perlfunc(1)            Wbudowane funkcje
      perlopentut(1)       Podręcznik funkcji open()
      perlpacktut(1)       Podręcznik funkcji pack() i unpack()
    perlpod(1)             Czysta stara dokumentacja
    perlpodspec(1)         Format czystej starej dokumentacji
    perlrun(1)             Wywoływanie Perla i opcje
    perldiag(1)            Komunikaty diagnostyczne
    perllexwarn(1)         Ostrzeżenia Perla i ich kontrola
    perldebug(1)           Debugowanie
    perlvar(1)             Predefiniowane zmienne
    perlre(1)              Wyrażenia regularne, reszta opowieści
    perlref(1)             Referencje, reszta opowieści
    perlform(1)            Formaty
    perlobj(1)             Obiekty Perla
    perltie(1)             Obiekty ukryte za prostymi zmiennymi
      perldbmfilter(1)     Filtry DBM

    perlipc(1)             Komunikacja międzyprocesowa
    perlfork(1)            Informacje o funkcji fork()
    perlnumber(1)          Semantyka liczb w Perlu

    perlthrtut(1)          Podręcznik wątków Perla
      perlothrtut(1)          Stary podręcznik wątków Perla

    perlport(1)            Podręcznik przenaszalności Perla
    perllocale(1)          Wsparcie dla ustawień narodowych
    perluniintro(1)        Wprowadzenie do Unikodu w Perlu
    perlunicode(1)         Wsparcie dla Unikodu w Perlu
    perlebcdic(1)          Używanie Perla na platformach EBCDIC

    perlsec(1)             Bezpieczeństwo

    perlmod(1)             Moduły Perla: jak działają
    perlmodlib(1)          Moduły Perla: jak pisać i używać
    perlmodstyle(1)        Moduły Perla: jak pisać ze stylem
    perlmodinstall(1)      Moduły Perla: jak zainstalować z archiwum CPAN
    perlnewmod(1)          Moduły Perla: przygotowanie nowego modułu do dystrybucji

    perlutil(1)            Narzędzie użytkowe znajdujące się w dystrybucji Perla

    perlcompile(1)         Wstęp do zestawu do kompilowania Perla

    perlfilter(1)          Filtry źródeł Perla

Funkcje wewnętrze i interfejs języka C

    perlembed(1)           Jak załączyć Perl do aplikacji C lub C++
    perldebguts(1)         Wskazówki dotyczące debuggowania Perla
    perlxstut(1)           Podręcznik XS 
    perlxs(1)              API interfejsu XS 
    perlclib(1)            Funkcje wewnętrzne zastępujące standardowe funkcje biblioteki C
    perlguts(1)            Wewnętrzne funkcje dla tych, którzy robią rozszerzenia
    perlcall(1)            Konwencje wołania z C

    perlapi(1)             Lista funkcji API (wygenerowana automatycznie)
    perlintern(1)          Wewnętrzne funkcje Perla (wygenerowane automatycznie)
    perliol(1)             API w C implementacji wejścia/wyjścia w Perlu przy użyciu warstw (layers)
    perlapio(1)            Abstrakcyjny, wewnętrzny interfejs Perla dla wejścia/wyjścia

    perlhack(1)            Przewodnik hakerów Perla

Różnorodne

    perlbook(1)            Informacje o książkach
    perltodo(1)            Rzeczy do zrobienia w nowszych wersjach Perla

    perlhist(1)            Historia Perla
    perldelta(1)           Zmiany od ostatniej wersji
    perl572delta(1)        Zmiany w wersji 5.7.2 Perla
    perl571delta(1)        Zmiany w wersji 5.7.1 Perla
    perl570delta(1)        Zmiany w wersji 5.7.0 Perla
    perl561delta(1)        Zmiany w wersji 5.6.1 Perla
    perl56delta(1)         Zmiany w wersji 5.6 Perla
    perl5005delta(1)       Zmiany w wersji 5.005 Perla
    perl5004delta(1)       Zmiany w wersji 5.004 Perla

Specyficzne dla języka

    perlcn(1)              Perl dla Chińczyków (uproszczony chiński, w EUC-CN)
    perljp(1)              Perl dla Japończyków (w EUC-JP)
    perlko(1)              Perl dla Koreańczyków (w EUC-KR)
    perltw(1)              Perl for Chińczyków (tradycyjny chiński, w Big5)

Specyficzne dla systemu

    perlaix(1)             Uwagi do systemu AIX
    perlamiga(1)           Uwagi do systemu AmigaOS
    perlapollo(1)          Uwagi do systemu Apollo DomainOS
    perlbeos(1)            Uwagi do systemu BeOS
    perlbs2000(1)          Uwagi do systemu POSIX-BC BS2000
    perlce(1)              Uwagi do systemu WinCE
    perlcygwin(1)          Uwagi do systemu Cygwin
    perldgux(1)            Uwagi do systemu DG/UX
    perldos(1)             Uwagi do systemu DOS
    perlepoc(1)            Uwagi do systemu EPOC
    perlfreebsd(1)         Uwagi do systemu FreeBSD
    perlhpux(1)            Uwagi do systemu HP-UX
    perlhurd(1)            Uwagi do systemu Hurd
    perlirix(1)            Uwagi do systemu Irix
    perlmachten(1)         Uwagi do systemu Power MachTen
    perlmacos(1)           Uwagi do systemu Mac OS (Classic)
    perlmint(1)            Uwagi do systemu MiNT
    perlmpeix(1)           Uwagi do systemu MPE/iX
    perlnetware(1)         Uwagi do systemu NetWare
    perlos2(1)             Uwagi do systemu OS/2
    perlos390(1)           Uwagi do systemu OS/390
    perlplan9(1)           Uwagi do systemu Plan 9
    perlqnx(1)             Uwagi do systemu QNX
    perlsolaris(1)         Uwagi do systemu Solaris
    perltru64(1)           Uwagi do systemu Tru64
    perluts(1)             Uwagi do systemu UTS
    perlvmesa(1)           Uwagi do systemu VM/ESA
    perlvms(1)             Uwagi do systemu VMS
    perlvos(1)             Uwagi do systemu Stratus VOS
    perlwin32(1)           Uwagi do systemu Windows

Na systemach Debiana, należy zainstalować pakiet perl-doc, który
 zawiera większość standardowej dokumentacji Perla oraz program perldoc(1).

Dostępna jest szczegółowa dokumentacja modułów perla zarówno tych rozprowadzanych z Perlem, jak i tych, które są dostarczane przez dostawców zewnętrznych.

Powinieneś być w stanie oglądać dokumentację Perla swoim programem man(1) lub perldoc(1).

Jeżeli z twoim programem w Perlu dzieje się coś dziwnego i nie wiesz, gdzie szukać pomocy, spróbuj najpierw użyć opcji -w, która bardzo często potrafi pokazać, gdzie dokładnie leży problem.

OPIS

Uwaga! To tłumaczenie może być nieaktualne!

Perl jest językiem interpretowanym, optymalizowanym do skanowania dowolnych plików tekstowych, wyciągania z nich informacji i drukowania raportów opartych na tych danych. 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, sed, awk i sh, więc osoby zaznajomione z tymi językami nie powinny mieć z nim problemów. (Historycy języków zauważą także pozostałości csh, Pascala, a nawet BASICa-PLUS). Składnia wyrażeń odpowiada dość blisko składni C. W przeciwieństwie do większości narzędzi uniksowych, Perl nie ogranicza arbitralnie rozmiaru twoich danych---jeśli masz wolną pamięć, Perl może wessać cały plik jako pojedynczy łańcuch znakowy. Rekurencja jest nieograniczonej głębokości. Tabele używane przez tablice asocjacyjne (tzw. ``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 seda lub awka, lub sh, 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 seda i awka na skrypty Perla.

Ale czekaj, jest więcej...

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

OK, to już wystarczająco dużo.

ŚRODOWISKO

Patrz perlrun(1).

DIAGNOSTYKA

Pragma "use warnings" (i przełącznik -w) daje uroczą diagnostykę.

Zobacz stronę perldiag(1) dla szczegółów o diagnostyce Perla. Pragma "use diagnostics" powoduje, że zazwyczaj zwięzłe ostrzeżenia i błędy Perla są wyświetalne właśnie w tej dłuższej formie.

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 -e, każde -e 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 -w?

BŁĘDY

Przełącznik -w 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 dotyczy 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ż 251 znaków. Numery linii wyświetlane w komunikatach diagnostycznych są wewnętrznie przechowywane jako liczby całkowite ``short integers'', dlatego maksymalna wartość jaką mogą przyjąć wynosi 65535 (wyższy numer spowoduje ponowne liczenia od zera).

Raporty o błędach możesz przesyłać pocztą do [email protected] (upewnij się, że załączyłeś pełne dane o konfiguracji jako wyjście programu myconfig, załączanego w drzewie źródłowym Perla, lub z "perl -V")). 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.