perlfunc

PERLFUNC(1)              PodrÄcznik programisty perla              PERLFUNC(1)



NAZWA
       perlfunc - Wbudowane funkcje perla

OPIS
        Uwaga! To tÅumaczenie może byÄ nieaktualne!

       Funkcje z tej sekcji mogÄ sÅużyÄ pomocÄ w wyrażeniach. PodpadajÄ one
       pod dwie gÅówne kategorie: operatory list, oraz nazwane operatory
       jednoargumentowe. [Przyp. tÅum.: w perlu nie ma prawdziwych funkcji, sÄ
       operatory] RóżniÄ siÄ one w zwiÄzku priorytetowym przecinkiem.
       (zobacz tablicÄ priorytetów na stronie perlop(1).). Operatory list
       pobierajÄ wiÄcej niż jeden argument, podczas gdy operatory
       jednoargumentowe, z definicji, nigdy nie biorÄ wiÄcej niż jeden
       argument. Tak wiÄc przecinek koÅczy argument operatora
       jednoargumentowego, lecz jedynie rozdziela argumenty operatora listy.
       Ogólnie, operator jednoargumentowy daje swojemu argumentowi kontekst
       skalarny, podczas gdy operator listowy może dawaÄ zarówno kontekst
       skalarny, jak i listowy. JeÅli daje obydwa, to argumenty skalarne bÄdÄ
       najpierw, a za nimi nastÄpiÄ argumenty listowe. (Zauważ, że może
       istnieÄ tylko jeden argument listowy.) Np. funkcja splice() ma trzy
       argumenty skalarne, za którymi nastÄpuje lista.

       W opisach skÅadni, które sÄ niżej, operatory list, które oczekujÄ
       listy (i dajÄ kontekst listowy elementom tej listy) sÄ pokazywane z
       argumentem LISTA.  Lista taka może skÅadaÄ siÄ z dowolnej kombinacji
       argumentów skalarnych lub wartoÅci listowych; wartoÅci listowe bÄdÄ
       wÅÄczone w listÄ tak, jakby każdy pojedynczy element byÅ interpolowany
       w tym punkcie listy, tworzÄc dÅuższÄ, jednowymiarowÄ wartoÅÄ listowÄ.
       Elementy typu LISTA powinny byÄ oddzielone przecinkami.

       Każda funkcja z poniższej listy, może byÄ użyta bez, albo z
       nawiasami wokóŠswoich argumentów. (Opisy skÅadni pomijajÄ nawiasy.)
       JeÅli używasz nawiasów, to prosta (lecz czasem zaskakujÄca) reguÅa
       jest taka: WYGLÄDA jak funkcja, wiÄc JEST funkcjÄ i priorytet nie ma
       znaczenia. W przeciwnym wypadku jest to operator listowy lub operator
       jednoargumentowy i priorytet siÄ liczy. I biaÅa spacja miÄdzy funkcjÄ i
       lewym nawiasem nie liczy siÄ--wiÄc musisz byÄ czasem ostrożny:

           print 1+2+4;        # Drukuje 7.
           print(1+2) + 4;     # Drukuje 3.
           print (1+2)+4;      # Też drukuje 3!
           print +(1+2)+4;     # Drukuje 7.
           print ((1+2)+4);    # Drukuje 7.

       JeÅli uruchamiasz perla z przeÅÄcznikiem -w, to bÄdziesz o tym
       ostrzegany. Na przykÅad trzecia z powyższych linii daje w efekcie:

           print (...) interpreted as function at - line 1.
           Useless use of integer addition in void context at - line 1.

       Dla instrukcji, które mogÄ byÄ używane zarówno w kontekstach
       skalarnych, jak i listowych, bÅÄd nie wymagajÄcy przerwania jest
       ogólnie wskazywany w kontekÅcie skalarnym przez zwrot niezdefiniowanej
       wartoÅci, a w kontekÅcie listowym przez zwrot listy null.

       ZapamiÄtaj nastÄpujÄcÄ reguÅÄ:

       NIE ISTNIEJE OGÃLNA REGUÅA KONWERSJI LISTY W SKALAR!

       Każdy operator i funkcja decyduje, jaki rodzaj wartoÅci jest
       najbardziej odpowiedni do zwrócenia w kontekÅcie skalarnym. Niektóre
       operatory zwracajÄ dÅugoÅÄ listy, która byÅaby zwrócona w kontekÅcie
       listowym. Niektóre zwracajÄ pierwszÄ wartoÅÄ listy. Niektóre zwracajÄ
       ostatniÄ wartoÅÄ listy.  Inne zwracajÄ liczbÄ pomyÅlnych operacji.
       Ogólnie, robiÄ one to, czego chcesz, chyba że oczekujesz spójnoÅci.

       Funkcje perla wedÅug kategorii

       Oto funkcje perla (wÅÄczajÄc rzeczy, które wyglÄdajÄ jak funkcje, np.
       niektóre sÅowa kluczowe i nazwane operatory), poukÅadane wedÅug
       kategorii.  Niektóre funkcje pojawiajÄ siÄ w wiÄcej niż jednym
       miejscu.

       Funkcje dla skalarów lub ÅaÅcuchów
            chomp, chop, chr, crypt, hex, index, lc, lcfirst, length, oct,
            ord, pack, q/ÅAÅCUCH/, qq/ÅAÅCUCH/, reverse, rindex, sprintf,
            substr, tr///, uc, ucfirst, y///

       Wyrażenia regularne i porównywanie wzorców
            m//, pos, quotemeta, s///, split, study

       Funkcje numeryczne
            abs, atan2, cos, exp, hex, int, log, oct, rand, sin, sqrt, srand

       Funkcje dla prawdziwych  tablic (@ARRAYs)
            pop, push, shift, splice, unshift

       Funkcje dla danych listowych
            grep, join, map, qw/ÅAÅCUCH/, reverse, sort, unpack

       Funkcje dla %HASHów (tablic asocjacyjnych)
            delete, each, exists, keys, values

       Funkcje wejÅcia i wyjÅcia
            binmode, close, closedir, dbmclose, dbmopen, die, eof, fileno,
            flock, format, getc, print, printf, read, readdir, rewinddir,
            seek, seekdir, select, syscall, sysread, sysseek, syswrite, tell,
            telldir, truncate, warn, write

       Funkcje dla danych o okreÅlonej dÅugoÅci lub rekordów
            pack, read, syscall, sysread, syswrite, unpack, vec

       Funkcje dla deskryptorów plików, plików lub katalogów
            -X, chdir, chmod, chown, chroot, fcntl, glob, ioctl, link, lstat,
            mkdir, open, opendir, readlink, rename, rmdir, stat, symlink,
            umask, unlink, utime

       SÅowa kluczowe zwiÄzane z kontrolÄ dziaÅania programu
            caller, continue, die, do, dump, eval, exit, goto, last, next,
            redo, return, sub, wantarray

       SÅowa kluczowe zwiÄzane z zakresami
            caller, import, local, my, package, use

       Różne funkcje
            defined, dump, eval, formline, local, my, reset, scalar, undef,
            wantarray

       Funkcje dla procesów i grup procesów
            alarm, exec, fork, getpgrp, getppid, getpriority, kill, pipe,
            qx/ÅAÅCUCH/, setpgrp, setpriority, sleep, system, times, wait,
            waitpid

       SÅowa kluczowe zwiÄzane z moduÅami perla
            do, import, no, package, require, use

       SÅowa kluczowe zwiÄzane z klasami i obiektowoÅciÄ
            bless, dbmclose, dbmopen, package, ref, tie, tied, untie, use

       Niskopoziomowe funkcje gniazd
            accept, bind, connect, getpeername, getsockname, getsockopt,
            listen, recv, send, setsockopt, shutdown, socket, socketpair

       Funkcje komunikacji miÄdzyprocesowej Systemu V
            msgctl, msgget, msgrcv, msgsnd, semctl, semget, semop, shmctl,
            shmget, shmread, shmwrite

       Pobieranie informacji użytkownika i grupy
            endgrent, endhostent, endnetent, endpwent, getgrent, getgrgid,
            getgrnam, getlogin, getpwent, getpwnam, getpwuid, setgrent,
            setpwent

       Pobieranie informacji sieciowej
            endprotoent, endservent, gethostbyaddr, gethostbyname, gethostent,
            getnetbyaddr, getnetbyname, getnetent, getprotobyname,
            getprotobynumber, getprotoent, getservbyname, getservbyport,
            getservent, sethostent, setnetent, setprotoent, setservent

       Funkcje zwiÄzane z czasem
            gmtime, localtime, time, times

       Funkcje nowe w perl5
            abs, bless, chomp, chr, exists, formline, glob, import, lc,
            lcfirst, map, my, no, prototype, qx, qw, readline, readpipe, ref,
            sub*, sysopen, tie, tied, uc, ucfirst, untie, use

            * - sub byÅo sÅowem kluczowym w perl4, lecz w perl5 jest to
            operator, który może byÄ używany w wyrażeniach.

       Funkcje przedawnione w perl5
            dbmclose, dbmopen

       Alfabetyczny listing funkcji perla

       -X UCHWYTPLIKU

       -X WYRAÅ»

       -X      Test pliku, gdzie X jest jednÄ z niżej wymienionych liter. Ten
               jednoargumentowy operator pobiera argument, nazwÄ pliku lub
               jego uchwyt.  NastÄpnie testuje plik i sprawdza, czy coÅ jest w
               nim prawdziwe. JeÅli argument zostanie pominiÄty, testuje $_,
               nie liczÄc -t, które testuje STDIN.  Zasadniczo zwraca 1 dla
               wyniku pozytywnego i '' dla negatywnego, a wartoÅÄ
               niezdefiniowanÄ, jeÅli plik nie istnieje. Mimo Åmiesznych nazw,
               priorytety sÄ takie same jak każdym innym nazwanym operatorze
               jednoargumentowym i argument może byÄ otoczony nawiasami.
               Operator może byÄ jednym z:

                   -r  Plik jest odczytywalny przez efektywny uid/gid.
                   -w  Plik jest zapisywalny przez efektywny uid/gid.
                   -x  Plik jest wykonywalny przez efektywny uid/gid.
                   -o  WÅaÅcicielem pliku jest efektywny uid.

                   -R  Plik jest odczytywalny przez rzeczywisty uid/gid.
                   -W  Plik jest zapisywalny przez rzeczywisty uid/gid.
                   -X  Plik jest wykonywalny przez rzeczywisty uid/gid.
                   -O  WÅaÅcicielem pliku jest rzeczywisty uid.

                   -e  Plik istnieje.
                   -z  Plik ma rozmiar zerowy.
                   -s  Plik ma rozmiar niezerowy (zwraca rozmiar).

                   -f  Plik jest prostym plikiem.
                   -d  Plik jest katalogiem.
                   -l  Plik jest dowiÄzaniem symbolicznym.
                   -p  Plik jest nazwanym potokiem (FIFO).
                   -S  Plik jest gniazdem.
                   -b  Plik jest blokowym plikiem specjalnym.
                   -c  Plik jest znakowym plikiem specjalnym.
                   -t  Uchwyt pliku jest otwarty do tty.

                   -u  Plik ma ustawiony bit `setuid'.
                   -g  Plik ma ustawiony bit `setgid'.
                   -k  Plik ma ustawiony bit `sticky'.

                   -T  Plik jest plikiem tekstowym.
                   -B  Plik jest plikiem binarnym (przeciwieÅstwo -T).

                   -M  Wiek pliku w dniach, gdy uruchomiÅ siÄ skrypt
                   -A  To samo dla czasu dostÄpu.
                   -C  To samo dla zmiany informacji inode.

               Interpretacja operatorów praw pliku -r, -R, -w, -W, -x i -X
               bazuje jedynie na prawach pliku i uid/gid użytkownika. MogÄ
               istnieÄ inne powody, dla których w rzeczywistoÅci nie możesz
               go odczytaÄ, zapisaÄ lub uruchomiÄ. Zauważ też, że dla
               superużytkownika, operatory -r, -R, -w, i -W zawsze zwracajÄ
               1, a -x i -X zwracajÄ 1, jeÅli ustawiony jest tak dowolny bit
               wykonania. Skrypty uruchamiane przez superużytkownika powinny
               wiÄc wywoÅywaÄ do celów testowania praw pliku funkcjÄ stat()
               lub tymczasowo zmieniÄ uid na coÅ innego.

               PrzykÅad:

                   while (<>) {
                       chop;
                       next unless -f $_;      # ignoruj specjalne
                       ...
                   }

               Zauważ, że -s/a/b/ nie dokonuje zanegowanego podstawienia.
               Powiedzenie -exp($foo) dziaÅa wciÄż zgodnie z oczekiwaniami,
               jednak jedynie pojedyncze litery za znakiem minusa sÄ
               interpretowane jako testy plikowe.

               PrzeÅÄczniki -T i -B dziaÅajÄ tak, że testujÄ pierwszy blok
               pliku w poszukiwaniu dziwnych znaków, takich jak dziwne kody
               sterujÄce, lub znaki z wysokiego zestawu znaków. JeÅli jest
               ich zbyt wiele (>30%), to jest to plik -B, w przeciwnym wypadku
               to plik -T.  Dodatkowo, każdy plik, zawierajÄcy w pierwszym
               bloku null jest uważany za plik binarny. JeÅli -T lub -B jest
               używane na uchwycie pliku, to testowany jest bieżÄcy bufor
               standardowego wejÅcia zamiast pierwszego bloku.  Zarówno -T
               jak i -B zwracajÄ odpowiedź pozytywnÄ dla pliku null lub
               pliku, który jest na EOF podczas testowania jego uchwytu. Z
               uwagi na to, że dla testu -T trzeba odczytaÄ plik, w
               wiÄkszoÅci przypadków używa siÄ najpierw -f, jak w next
               unless -f $file && -T $file.

               JeÅli któryÅ z operatorów testu plików (lub stat() czy
               lstat()) otrzymaÅby specjalny uchwyt pliku, skÅadajÄcy siÄ z
               samego podkreÅlenia, to użyta zostaÅaby struktura `stat' z
               poprzedniego testu pliku, oszczÄdzajÄc wywoÅania systemowego.
               (Nie dziaÅa to dla -t, a ponadto powinieneÅ pamiÄtaÄ, że
               lstat() i -l zostawiajÄ w strukturze wartoÅci dla dowiÄzaÅ
               symbolicznych, a nie rzeczywistych plików.) PrzykÅad:

                   print "Can do.\n" if -r $a ⎪⎪ -w _ ⎪⎪ -x _;

                   stat($filename);
                   print "Readable\n" if -r _;
                   print "Writable\n" if -w _;
                   print "Executable\n" if -x _;
                   print "Setuid\n" if -u _;
                   print "Setgid\n" if -g _;
                   print "Sticky\n" if -k _;
                   print "Text\n" if -T _;
                   print "Binary\n" if -B _;


       abs WARTOÅÄ

       abs     Zwraca moduÅ argumentu.  JeÅli parametr WARTOÅÄ zostanie
               pominiÄty, to używane jest $_.

       accept NOWEGNIAZDO,GNIAZDO
               Przyjmuje nadchodzÄce poÅÄczenie na gnieździe, podobnie jak
               wywoÅanie systemowe accept(2). Po sukcesie zwraca spakowany
               adres, a w razie porażki FALSE. PrzykÅad użycia można
               znaleÅºÄ w sekcji Sockets: Client/Server Communication strony
               podrÄcznika perlipc(1).

       alarm SEKUNDY

       alarm   Powoduje, że sygnaŠALARM jest dostarczany do tego procesu po
               okreÅlonej liczbie sekund. JeÅli nie podano parametru sekund,
               używana jest wartoÅÄ zachowana w $_. (Niestety na niektórych
               maszynach czas może byÄ do sekundy krótszy niż ten, który
               podasz, zależnie od sposobu zliczania sekund.) Naraz odliczaÄ
               może tylko jeden zegar. Każde wywoÅanie wyÅÄcza poprzedni
               zegar, a argument 0 wyÅÄcza poprzedni zegar bez uruchamiania
               nowego. Zwrócona wartoÅÄ jest iloÅciÄ czasu, pozostajÄcego
               poprzedniemu zegarowi.

               Dla opóźnieÅ lub wiÄkszej dokÅadnoÅci niż jedna sekunda,
               możesz użyÄ perlowego interfejsu syscall(), i dostaÄ siÄ do
               setitimer(2), o ile twój system to obsÅuguje. W przeciwnym
               wypadku obejrzyj opis select(), gdzieÅ w tym dokumencie.
               Ogólnie czÄstym bÅÄdem jest ÅÄczenie wywoÅaÅ alarm() i
               sleep().

               JeÅli chcesz używaÄ alarm() do timeout'owania wywoÅania
               systemowego, musisz użyÄ pary eval/die. Nie można oczekiwaÄ,
               że alarm spowoduje, że wywoÅanie systemowe siÄ zakoÅczy, z $!
               ustawionym na EINTR, gdyż na niektórych systemach perl
               ustawia obsÅugÄ sygnaÅów tak, że wywoÅania systemowe sÄ
               restartowane. Używanie eval/die dziaÅa zawsze.

                   eval {
                       local $SIG{ALRM} = sub { die "alarm\n" };       # NB \n wymagane
                       alarm $timeout;
                       $nread = sysread SOCKET, $buffer, $size;
                       alarm 0;
                   };
                   die if $@ && $@ ne "alarm\n";       # propaguj bÅÄdy
                   if ($@) {
                       # timeout
                   }
                   else {
                       # bez timeouta
                   }


       atan2 Y,X
               Zwraca arcus tangens z Y/X, w zakresie  -pi do pi.

               Dla operacji tangens, możesz użyÄ funkcji POSIX::tan(), lub
               użyÄ znanej relacji:

                   sub tan { sin($_[0]) / cos($_[0])  }


       bind GNIAZDO,NAZWA
               PrzywiÄzuje adres sieciowy do gniazda, podobnie jak wywoÅanie
               systemowe bind(2). Po sukcesie zwraca TRUE, a w przeciwnym
               wypadku FALSE. NAZWA powinna byÄ spakowanym adresem, typu
               odpowiedniego dla gniazda. Zobacz przykÅady w sekcji Sockets:
               Client/Server Communication na stronie podrÄcznika perlipc(1).

       binmode UCHWYTYPLIKU
               Powoduje, że plik przeÅÄcza siÄ w tryb binarny zapisu/odczytu.
               Ma to miejsce w systemach operacyjnych, które dokonujÄ takiego
               rozróżnienia. Pliki, które nie sÄ w trybie binarnym,
               ukrywajÄ wejÅciowe sekwencje CR LF pod LF, a sekwencje
               wyjÅciowe LF sÄ tÅumaczone na CR LF. Tryb binarny nie wpÅywa na
               nic pod Unixem; jednak pod MS-DOS i innymi archaicznymi
               systemami, może to byÄ niezbÄdna wÅaÅciwoÅÄ--w przeciwnym
               wypadku twoja biblioteka C może znieksztaÅciÄ plik.  Kluczem
               do rozróżniania systemów, które potrzebujÄ trybu binarnego
               od tych, które go nie potrzebujÄ, jest ich format pliku
               tekstowego. Systemy podobne do Unix i Plan9, oddzielajÄ linie
               pojedynczym znakiem i kodujÄ go w C jako '\n'. Nie potrzebujÄ
               one trybu binarnego. Wszystkie inne potrzebujÄ. JeÅli
               UCHWYTPLIKU jest wyrażeniem, to wartoÅÄ brana jest jako nazwa
               uchwytu pliku.

       bless REF,NAZWAKLASY

       bless REF
               Funkcja ta mówi rzeczy, wskazywanej przez referencjÄ REF, że
               jest teraz obiektem w pakiecie NAZWAKLASY--lub w bieżÄcym
               pakiecie, jeÅli nie podano parametru nazwy klasy. Funkcja
               zwraca dla pewnoÅci referencjÄ, gdyż jest ona czÄsto ostatniÄ
               rzeczÄ w konstruktorze. JeÅli bÅogosÅawiona funkcja ma byÄ
               dziedziczona w klasach potomnych, to zawsze używaj wersji
               dwuargumentowej tej funkcji. Dla dalszych informacji o
               bÅogosÅawieniu obiektów zobacz stronÄ perlobj(1).

       caller WYRAÅ»

       caller  Zwraca kontekst bieżÄcego wywoÅania podprocedury. W kontekÅcie
               skalarnym, jeÅli byÅo wywoÅanie, tj. jeÅli jesteÅmy w
               podprocedurze lub eval() lub require(), zwraca nazwÄ pakietu
               wywoÅujÄcego, a w przeciwnym razie wartoÅÄ niezdefiniowanÄ. W
               kontekÅcie listowym, zwraca

                   ($pakiet, $nazwapliku, $linia) = caller;

               Z parametrem WYRAÅ» zwraca trochÄ dodatkowych danych, z
               których korzysta debugger do drukowania Åladu stosu. WartoÅÄ
               WYRAÅ» wskazuje, o ile ramek wywoÅaÅ należy siÄ cofnÄÄ od
               bieżÄcej.

                   ($pakiet, $nazwapliku, $linia, $podprocedura,
                    $maargumenty, $chcetabliÄ, $teksteval, $jest_require) = caller($i);

               $podprocedura tutaj może byÄ "(eval)", jeÅli ramka nie jest
               wywoÅaniem podproceduralnym. W tej sytuacji ustawiane sÄ
               dodatkowe elementy, $teksteval i $jest_require: $jest_require
               jest prawdziwe, jeÅli ramka zostaÅa utworzona w instrukcji
               require lub use, $teksteval zawiera tekst instrukcji eval
               WYRAÅ».  Praktycznie, dla instrukcji eval BLOCK, $nazwapliku to
               "(eval)", a $teksteval jest niezdefiniowany.  (Zauważ też,
               że każda instrukcja use tworzy ramkÄ require. (wewnÄtrz ramki
               eval WYRAÅ»)

               Co wiÄcej, po wywoÅaniu z pakietu DB, caller zwraca jeszcze
               dokÅadniejsze dane: ustawia zmiennÄ listowÄ @DB::args na
               argumenty, z którymi wywoÅano podprocedurÄ.

       chdir WYRAÅ»
               Zmienia katalog roboczy na WYRAÅ». JeÅli WYRA jest pominiÄte,
               to zmienia katalog na katalog domowy. Po sukcesie zwraca TRUE,
               a w przeciwnym wypadku FALSE. Zobacz przykÅad przy opisie
               die().

       chmod LISTA
               Zmienia prawa listy plików. Pierwszy element listy musi byÄ
               numerycznym zapisem praw, który powinien byÄ liczbÄ Ã³semkowÄ,
               a który z pewnoÅciÄ nie powinien byÄ ÅaÅcuchem cyfr
               ósemkowych: 0644 jest ok, ale '0644' nie jest.  Zwraca liczbÄ
               plików, których prawa zmieniono. JeÅli wszystkim co masz jest
               ÅaÅcuch, zobacz też wpis oct, znajdujÄcy siÄ gdzie indziej w
               tym dokumencie.

                   $cnt = chmod 0755, 'foo', 'bar';
                   chmod 0755, @executables;
                   $mode = '0644'; chmod $mode, 'foo';      # ustawia prawa na --w----r-T!
                   $mode = '0644'; chmod oct($mode), 'foo'; # to jest lepsze
                   $mode = 0644;   chmod $mode, 'foo';      # to jest najlepsze


       chomp ZMIENNA

       chomp LISTA

       chomp   Jest to troszkÄ bezpieczniejsza wersja wpisu chop, opisanego
               gdzie indziej w tym dokumencie. Usuwa wszelkie zakoÅczenia
               linii, które odpowiadajÄ bieżÄcej wartoÅci $/ (znanego też
               jako $INPUT_RECORD_SEPARATOR w module English).  Zwraca
               caÅkowitÄ liczbÄ znaków, usuniÄtych ze wszystkich argumentów.
               CzÄsto jest używany do usuwania nowych linii z koÅca rekordu
               wejÅciowego jeÅli obawiasz siÄ, że rekordowi może jej
               brakowaÄ. W trybie `paragraph' ($/ = ""), usuwa wszystkie
               koÅczÄce znaki nowych linii z ÅaÅcuchów.  JeÅli pominiÄta
               zostanie ZMIENNA, to ucinane jest $_.  PrzykÅad:

                   while (<>) {
                       chomp;  # zapobiegaj \n na ostatnim polu
                       @array = split(/:/);
                       ...
                   }

               Możesz w zasadzie uciÄÄ wszystko co jest lwartoÅciÄ, wÅÄczajÄc
               przypisanie:

                   chomp($cwd = `pwd`);
                   chomp($answer = <STDIN>);

               JeÅli ucinasz listÄ, obcinany jest każdy element, a zwracana
               jest lista usuniÄtych znaków.

       chop ZMIENNA

       chop LISTA

       chop    Odrywa ostatni znak ÅaÅcucha i zwraca jego wartoÅÄ. Jest przede
               wszystkim używany do usuwania nowej linii z koÅca rekordu
               wejÅciowego, lecz jest dużo bardziej efektywny niż s/\n//,
               ponieważ ani nie skanuje, ani nie kopiuje ÅaÅcucha. JeÅli
               pominiÄto ZMIENNÄ, odrywa $_.  PrzykÅad:

                   while (<>) {
                       chop;   # zapobież \n na ostatnim polu
                       @array = split(/:/);
                       ...
                   }

               Możesz w zasadzie oderwaÄ cokolwiek, co jest lwartoÅciÄ,
               wÅÄczajÄc przypisanie:

                   chop($cwd = `pwd`);
                   chop($answer = <STDIN>);

               JeÅli obrywasz listÄ, obrywany jest każdy element. Zwracana
               jest tylko wartoÅÄ ostatniego oderwania.

               Zauważ, że chop zwraca ostatni znak. Aby zwróciÄ wszystkie
               poza ostatnim, użyj substr($lancuch, 0, -1).

       chown LISTA
               Zmienia wÅaÅciciela (i grupÄ) listy plików. Pierwsze dwa
               argumenty listy muszÄ byÄ NUMERYCZNYMI uid i gid, podanym w tej
               kolejnoÅci.  Zwraca liczbÄ plików, na których powiodÅa siÄ
               zamiana.

                   $cnt = chown $uid, $gid, 'foo', 'bar';
                   chown $uid, $gid, @filenames;

               Oto przykÅad, który podglÄda nienumeryczne uid'y w pliku z
               hasÅami:

                   print "User: ";
                   chop($user = <STDIN>);
                   print "Files: "
                   chop($pattern = <STDIN>);

                   ($login,$pass,$uid,$gid) = getpwnam($user)
                       or die "$user not in passwd file";

                   @ary = <${pattern}>;        # rozwiŠnazwy plików
                   chown $uid, $gid, @ary;

               Na wiÄkszoÅci systemów nie możesz zmieniaÄ wÅaÅcicielstwa,
               chyba że jesteÅ superużytkownikiem, choÄ powinieneÅ byÄ w
               stanie zmieniaÄ grupÄ na dowolnÄ z twoich drugorzÄdnych grup.
               Na niezabezpieczonych systemach ograniczenia te mogÄ byÄ
               mniejsze, lecz nie jest to przenoÅne zaÅożenie.

       chr LICZBA

       chr     Zwraca znak, reprezentowany przez LICZBÄ w zbiorze znaków.  Na
               przykÅad, chr(65) to "A" w ASCII.  Dla odwrócenia tego
               dziaÅania, użyj ord, które jest opisane gdzie indziej w tym
               dokumencie.

               JeÅli pominiÄto LICZBÄ, to używane jest $_.

       chroot NAZWAPLIKU

       chroot  Funkcja ta dziaÅa tak samo jak wywoÅanie systemowe chroot(2):
               powoduje, że podany katalog staje siÄ nowym katalogiem
               gÅównym dla wszelkich nowych Åcieżek, które bÄdÄ siÄ
               zaczynaÅy od "/". Tyczy siÄ to twojego procesu i jego dzieci.
               Ze wzglÄdów bezpieczeÅstwa, wywoÅanie to jest zastrzeżone dla
               superużytkownika. JeÅli pominiÄto NAZWÄPLIKU, to używany jest
               $_.

       close UCHWYTPLIKU
               Zamyka plik lub potok zwiÄzany z uchwytem, zwracajÄc TRUE
               jedynie w wypadku, gdy stdio da radÄ opróżniÄ wszystkie
               bufory i zamknÄÄ systemowy deskryptor pliku. JeÅli uchwyt pliku
               pochodziÅ od otwartego potoku, funkcja zwróci FALSE jeÅli
               któreÅ z potrzebnych wywoÅaÅ systemowych zawiedzie lub jeÅli
               program zakoÅczy pracÄ z niezerowym statusem. (JeÅli problemem
               jest fakt, że program skoÅczyÅ siÄ z niezerowym kodem, to $!
               bÄdzie ustawione na 0.)  Nie musisz zamykaÄ UCHWYTUPLIKU, jeÅli
               chcesz go zaraz potem wykorzystaÄ do innego otwarcia open(),
               ponieważ funkcja open() zamknie go za ciebie. Jednak jawne
               zamkniÄcie pliku wejÅciowego resetuje licznik linii ($.),
               podczas gdy niejawne zamkniÄcie w open() tego nie robi. Poza
               tym, zamykanie potoku powoduje oczekiwanie na zakoÅczenie
               procesu z potoku, na wypadek gdybyÅ chciaÅ później obejrzeÄ
               wyjÅcie potoku. Jawne zamykanie potoku wstawia wartoÅÄ statusu
               komendy do $?.  PrzykÅad:

                   open(OUTPUT, '⎪sort >foo'); # potok do `sort'
                   ...                         # drukuj różne rzeczy na wyjÅcie
                   close OUTPUT;               # czekaj na zakoÅczenie `sort'
                   open(INPUT, 'foo');         # pobierz wyniki sortowania

               UCHWYTPLIKU może byÄ wyrażeniem, którego wartoÅÄ daje
               rzeczywistÄ nazwÄ uchwytu pliku.

       closedir UCHWYTKATALOGU
               Zamyka katalog, otworzony funkcjÄ opendir().

       connect GNIAZDO,NAZWA
               Próbuje poÅÄczyÄ siÄ ze zdalnym gniazdem, zupeÅnie tak jak
               wywoÅanie systemowe connect(2). Po sukcesie zwraca TRUE, a w
               przeciwnym wypadku FALSE. NAZWA powinna byÄ spakowanym typem
               adresu, odpowiednim dla gniazda. Zobacz przykÅady w sekcji
               Sockets: Client/Server Communication na stronie podrÄcznika
               perlipc(1).

       continue BLOK
               W rzeczywistoÅci jest to instrukcja kontroli wykonywania
               programu, a nie funkcja. JeÅli do BLOKU doÅÄczone jest continue
               BLOK (zazwyczaj we while lub foreach), to jest zawsze
               wykonywany tuż przed kolejnym wykonaniem warunku, zupeÅnie jak
               trzecia czÄÅÄ pÄtli for w C. Tak wiÄc może byÄ używane do
               zwiÄkszania zmiennej pÄtli, nawet gdy pÄtla byÅa kontynuowana z
               pomocÄ instrukcji next (która jest podobna do instrukcji
               continue z C).

       cos WYRAÅ»
               Zwraca cosinus z WYRAÅ» (wyrażonego w radianach). JeÅli
               pominie siÄ argument WYRAÅ», to używany jest $_.

               Dla operacji arcus cosinus, możesz użyÄ funkcji
               POSIX::acos(), lub nastÄpujÄcej relacji:

                   sub acos { atan2( sqrt(1 - $_[0] * $_[0]), $_[0] ) }


       crypt CZYSTYTEKST,SALT
               Koduje ÅaÅcuch na wzór funkcji crypt(3) z biblioteki C. Może
               to byÄ użyteczne np. do sprawdzania plików z hasÅami w
               poszukiwaniu sÅabych haseÅ.  RobiÄ to powinni tylko ludzie
               noszÄcy biaÅe kapelusze.

               Zauważ, że crypt jest funkcjÄ jednokierunkowÄ, podobnie jak
               rozbijanie jajek na omlet. Nie istnieje (znana) funkcja
               dekodujÄca. W wyniku, funkcja wcale nie jest tak użyteczna do
               kryptografii. (Dla tego, zobacz najbliższy mirror CPAN.)

               Oto przykÅad, który daje pewnoÅÄ, że ktokolwiek uruchomi ten
               program, zna swoje wÅasne hasÅo:

                   $pwd = (getpwuid($<))[1];
                   $salt = substr($pwd, 0, 2);

                   system "stty -echo";
                   print "HasÅo: ";
                   chop($word = <STDIN>);
                   print "\n";
                   system "stty echo";

                   if (crypt($word, $salt) ne $pwd) {
                       die "Niezmiernie mi przykro...\n";
                   } else {
                       print "ok\n";
                   }

               OczywiÅcie wpisywanie swojego hasÅa za każdym razem, gdy ktoÅ
               o nie poprosi jest niemÄdre.

       dbmclose HASH
               [Funkcja ta jest przedawniona przez funkcjÄ untie().]

               Przerywa powiÄzanie miÄdzy plikiem DBM a tablicÄ asocjacyjnÄ.

       dbmopen HASH,NAZWADB,PRAWA
               [funkcja ta jest przedawniona przez funkcjÄ tie().]

               ÅÄczy to plik dbm(3), ndbm(3), sdbm(3), gdbm(), lub Berkeley DB
               z tablicÄ asocjacyjnÄ. HASH jest nazwÄ tablicy asocjacyjnej. (w
               przeciwieÅstwie do normalnego otwierania, pierwszy argument NIE
               jest uchwytem pliku, choÄ wyglÄda podobnie). NAZWADB jest nazwÄ
               bazy danych (bez rozszerzeÅ w rodzaju .dir czy .pag).  JeÅli
               baza nie istnieje, to jest tworzona z prawami okreÅlanymi przez
               PRAWA (zmodyfikowanymi przez umask()). JeÅli twój system
               obsÅuguje tylko starsze funkcje DBM, to możesz w swoim
               programie wykonaÄ tylko jeden dbmopen(). W starszych wersjach
               perla, jeÅli system nie miaÅ ani DBM, ani  ndbm, wywoÅanie
               dbmopen powodowaÅo bÅÄd krytyczny; teraz schodzi do sdbm(3).

               JeÅli nie masz prawa zapisu do pliku DBM, to możesz tylko
               odczytywaÄ zmienne asocjacyjne, nie możesz ich ustawiaÄ. JeÅli
               chcesz spróbowaÄ, czy możesz zapisywaÄ, użyj albo testów
               plikowych, albo spróbuj ustawiÄ próbny wpis asocjacyjny
               wewnÄtrz eval(), co przechwyci bÅÄd.

               Zauważ, że funkcje takie, jak keys() i values() mogÄ zwracaÄ
               w użyciu z plikami DBM wielkie tablice. Możesz do iteracji
               przez wielkie pliki DBM używaÄ także each(). PrzykÅad:

                   # drukuj offsety pliku historii
                   dbmopen(%HIST,'/usr/lib/news/history',0666);
                   while (($key,$val) = each %HIST) {
                       print $key, ' = ', unpack('L',$val), "\n";
                   }
                   dbmclose(%HIST);

               Zobacz też stronÄ podrÄcznika AnyDBM_File -- jest tam bardziej
               ogólny opis wad i zalet różnych podejÅÄ dbm. Zobacz też
               stronÄ DB_File, dla bogatej implementacji.

       defined WYRAÅ»

       defined Zwraca wartoÅÄ logicznÄ, mówiÄcÄ czy WYRAÅ» ma wartoÅÄ innÄ od
               niezdefiniowanej undef. JeÅli WYRAÅ» nie jest obecne, to
               testowane jest $_.

               Wiele operacji zwraca undef aby wskazaÄ bÅÄd, koniec pliku,
               bÅÄd systemowy, niezainicjalizowanÄ zmiennÄ i inne wyjÄtki.
               Funkcja ta pozwala odróżniÄ undef od innych wartoÅci. (Prosty
               test logiczny nie rozróżni undef, zero, pustego ÅaÅcucha, i
               "0", które wszystkie sÄ jednakowo faÅszywe.)  Zauważ, że
               ponieważ undef jest prawidÅowym skalarem, to jego obecnoÅÄ
               niekoniecznie musi wskazywaÄ warunek wyjÄtkowy: pop() zwraca
               undef gdy jego argument jest pustÄ tablicÄ, lub gdy zwracany
               element jest wartoÅciÄ Wundef.

               defined() można używaÄ też do sprawdzania czy podprocedura
               wychodzi. Z drugiej strony, używanie defined() na agregatach
               (tablicach asocjacyjnych i tablicach) nie musi zwróciÄ
               zgodnych z intuicjÄ wyników i powinno siÄ go w tych
               przypadkach unikaÄ.

               Gdy używane na elemencie tablicy asocjacyjnej, mówi czy
               wartoÅÄ jest zdefiniowana, a nie czy taki klucz istnieje w
               tablicy. Dla tego celu, użyj exists, które jest opisane gdzie
               indziej w tym dokumencie.

               PrzykÅady:

                   print if defined $switch{'D'};
                   print "$val\n" while defined($val = pop(@ary));
                   die "Can't readlink $sym: $!"
                       unless defined($value = readlink $sym);
                   sub foo { defined &$bar ? &$bar(@_) : die "Brak bar"; }
                   $debugging = 0 unless defined $debugging;

               Uwaga: Wielu ludzi nadużywa defined(), a potem sÄ oni
               zaskoczeni, że liczba 0 i "" (ÅaÅcuch o dÅugoÅci zero) sÄ w
               rzeczywistoÅci wartoÅciami zdefiniowanymi. Na przykÅad, jeÅli
               powiesz

                   "ab" =~ /a(.*)b/;

               to porównanie wzorca siÄ powiedzie i $1 bÄdzie zdefiniowane,
               niezależnie od tego, że trafiÅo w "nic". W rzeczywistoÅci nie
               można powiedzieÄ, że trafiÅo w "nic". Raczej trafiÅo w coÅ, o
               dÅugoÅci zera znaków. Jest to wszystko bardzo czyste i
               uczciwe. Gdy funkcja zwraca wartoÅÄ niezdefiniowanÄ, jest to
               przyznanie siÄ, że nie mogÅa daÄ uczciwej odpowiedzi. Tak wiÄc
               powinieneÅ używaÄ defined() tylko jeÅli sprawdzasz dziaÅanie
               tego, co próbujesz osiÄgnÄÄ. W niektórych wypadkach, rzeczÄ,
               której oczekujesz jest proste porównanie z 0 lub "".

               Obecnie używanie defined() na caÅej tablicy lub tablicy
               asocjacyjnej, zgÅasza tylko czy zostaÅa dla niego zaalokowana
               pamiÄÄ. Tak wiÄc tablica, którÄ ustawiasz na pustÄ listÄ jest
               poczÄtkowo niezdefiniowana, a gdy siÄ zapeÅni, staje siÄ
               zdefiniowana. Zamiast tego powinieneÅ użyÄ prostego testu
               rozmiaru:

                   if (@an_array) { print "ma elementy tablicowe\n" }
                   if (%a_hash)   { print "ma elementy asocjacyjne\n"   }

               Użycie na nich undef() powoduje wyczyszczenie ich pamiÄci i
               zgÅoszenie, że nie sÄ już zdefiniowane. Nie powinno siÄ
               jednak tego robiÄ, chyba że nie masz zamiaru ich wiÄcej
               używaÄ, ponieważ po prostu szybciej jest używaÄ pamiÄci
               gotowej do wypeÅnienia, niż alokowaÄ jÄ od nowa.

               Zachowanie defined() na agregatach może zostaÄ zmienione,
               poprawione, lub zepsute w nastÄpnych wersjach perla.

               Zobacz też opisy undef, exists,  i ref, znajdujÄce siÄ w
               innych miejscach tego dokumentu.

       delete WYRAÅ»
               Kasuje podany klucz(e) i zwiÄzane z nim wartoÅci z tablicy
               asocjacyjnej. Dla każdego klucza, zwracana jest skasowana
               wartoÅÄ zwiÄzana z kluczem albo wartoÅÄ niezdefiniowana, jeÅli
               taki klucz nie istniaÅ. Kasowanie z $ENV{} modyfikuje
               Årodowisko. Kasowanie z tablicy asocjacyjnej, podÅÄczonej do
               pliku DBM, kasuje wpis z pliku. (lecz kasowanie z takiego pliku
               nie musi zwracaÄ niczego.)

               NastÄpujÄcy przykÅad kasuje wszystkie wartoÅci tablicy
               asocjacyjnej:

                   foreach $key (keys %HASH) {
                       delete $HASH{$key};
                   }

               Podobnie robi nastÄpujÄce:

                   delete @HASH{keys %HASH}

               (Ale obydwa sÄ wolniejsze niż komenda undef().)  Zauważ, że
               WYRAÅ» może byÄ arbitralnie skomplikowany tak dÅugo, dopóki
               koÅcowa operacja jest podejrzeniem elementu asocjacyjnego lub
               wycinkiem tablicy asocjacyjnej (`hash slice'):

                   delete $ref->[$x][$y]{$key};
                   delete @{$ref->[$x][$y]}{$key1, $key2, @morekeys};


       die LISTA
               Poza obrÄbem eval() drukuje wartoÅÄ LISTY na STDERR i koÅczy
               pracÄ z bieżÄcÄ wartoÅciÄ $! (errno). JeÅli $!  wynosi 0, to
               koÅczy z wartoÅciÄ ($? >> 8) (status poprzedniej `komendy`).
               JeÅli ($? >> 8) jest zerem, to koÅczy z wartoÅciÄ 255.
               WewnÄtrz eval, komunikat o bÅÄdzie jest pakowany do $@, a
               eval() jest przerywany wartoÅciÄ niezdefiniowanÄ; powoduje to,
               że die() może podnieÅÄ wyjÄtek.

               Równoważne przykÅady:

                   die "Nie mogÄ przejÅÄ do spool: $!\n" unless chdir '/usr/spool/news';
                   chdir '/usr/spool/news' or die "Nie mogÄ przejÅÄ do spool: $!\n"

               JeÅli wartoÅÄ WYRAÅ» nie koÅczy siÄ nowÄ liniÄ, drukowany jest
               również numer bieżÄcej linii skryptu i wejÅcia, a za nimi
               doklejana jest nowa linia.  Wskazówka: Czasami dodanie ",
               stopped" do twojego komunikatu może nadaÄ mu wiÄcej sensu po
               doklejeniu ÅaÅcucha "at foo line 123".  ZaÅóżmy, że
               uruchamiasz skrypt "canasta".

                   die "/etc/games is no good";
                   die "/etc/games is no good, stopped";

               dajÄ w efekcie odpowiednio:

                   /etc/games is no good at canasta line 123.
                   /etc/games is no good, stopped at canasta line 123.

               Zobacz także exit() i warn().

               Można zaaranżowaÄ sprawÄ tak, że callback bÄdzie wywoÅywany
               tuż przed uczynieniem swojej powinnoÅci przez die(). Należy w
               tym celu ustawiÄ hak $SIG{__DIE__}.  ZwiÄzany handler zostanie
               wywoÅany z tekstem bÅÄdu i może zmieniÄ treÅÄ komunikatu
               bÅÄdu, wywoÅujÄc die() ponownie.  Zobacz stronÄ perlvar(1), dla
               dalszych detali o ustawianiu wpisów %SIG, a także opis eval()
               dla paru przykÅadów.

       do BLOK Nie jest to funkcja. Zwraca wartoÅÄ ostatniej komendy w
               sekwencji komend, wskazywanych przez BLOK. Po zmodyfikowaniu
               przez modyfikator pÄtli, wywoÅuje jednokrotnie BLOK przed
               sprawdzeniem warunku pÄtli. (W innych instrukcjach modyfikatory
               pÄtli sprawdzajÄ warunek na samym poczÄtku.)

       do PODPROCEDURA(LISTA)
               Niezalecana forma wywoÅania podprocedury. Zobacz stronÄ
               perlsub(1).

       do WYRAÅ»
               Używa wartoÅci WYRAÅ» jako nazwy pliku i wykonuje zawartoÅÄ
               tego pliku jako skrypt perla. Podstawowym zadaniem tej
               instrukcji jest wÅÄczanie podprocedur z bibliotek perla.

                   do 'stat.pl';

               jest zupeÅnie jak

                   eval `cat stat.pl`;

               tylko trochÄ bardziej efektywne, utrzymuje Åledzenie bieżÄcej
               nazwy plików dla komunikatów o bÅÄdach i przeszukuje
               wszystkie katalogi -I, jeÅli plik nie znajduje siÄ w katalogu
               bieżÄcym (zobacz także tablicÄ @INC w sekcji Predefined Names
               podrÄcznika perlvar(1)).  Jednak jest takie samo w sensie, że
               przetwarza (parses) plik za każdym razem, gdy go wywoÅasz,
               wiÄc przypuszczalnie nie chciaÅbyÅ tego wewnÄtrz pÄtli.

               Zauważ, że wÅÄczanie moduÅów bibliotecznych można zaÅatwiÄ
               lepiej z pomocÄ operatorów use() i require(), które również
               dokonujÄ sprawdzania bÅÄdów i powodujÄ wyjÄtki jeÅli jest
               jakiÅ problem.

       dump ETYKIETA
               Powoduje to natychmiastowy zrzut core. Jest to po to, byÅ mógÅ
               użyÄ programu undump do konwertowania zrzutu core do pliku
               binarnego po zainicjalizowaniu wszystkich zmiennych z poczÄtku
               programu. Po uruchomieniu nowego binarium, rozpocznie siÄ ono
               od wywoÅania goto ETYKIETA (ze wszystkimi ograniczeniami, na
               które cierpi goto).  MyÅl o tym, jak o goto z interweniujÄcym
               zrzutem core i reinkarnacjÄ. JeÅli ETYKIETA jest pominiÄta,
               program restartuje siÄ od poczÄtku. UWAGA: wszelkie pliki,
               które byÅy otwarte w momencie zrzutu core nie bÄdÄ otwarte w
               nowej inkarnacji programu, powodujÄc przypuszczalnie
               zamieszanie w czÄÅci perla. Zobacz też opcjÄ -u ze strony
               perlrun(1).

               PrzykÅad:

                   #!/usr/bin/perl
                   require 'getopt.pl';
                   require 'stat.pl';
                   %days = (
                       'Sun' => 1,
                       'Mon' => 2,
                       'Tue' => 3,
                       'Wed' => 4,
                       'Thu' => 5,
                       'Fri' => 6,
                       'Sat' => 7,
                   );

                   dump QUICKSTART if $ARGV[0] eq '-d';

                   QUICKSTART:
                   Getopt('f');


       each HASH
               Po wywoÅaniu w kontekÅcie listowym, zwraca dwuelementowÄ
               tablicÄ, skÅadajÄcÄ siÄ z klucza i wartoÅci nastÄpnego elementu
               asocjacyjnego, tak że możesz iterowaÄ poprzez tablicÄ. Po
               wywoÅaniu w kontekÅcie skalarnym, zwraca tylko klucz  dla
               nastÄpnego elementu asocjacyjnego. (Uwaga: Klucze mogÄ mieÄ
               wartoÅÄ "0" lub "", co jest logicznie nieprawidÅowe; możesz w
               tym celu chcieÄ zapobiec konstrukcjom jak while ($k = each
               %foo) {} .)

               Wpisy sÄ zwracane w kolejnoÅci doÅÄ losowej. Gdy tablica
               asocjacyjna jest caÅkowicie odczytana, w kontekÅcie listowym
               zwracana jest tablica null (co po przypisaniu daje wartoÅÄ
               FALSE (0)), a w kontekÅcie skalarnym zwracany jest undef.
               NastÄpne wywoÅanie each() po tym rozpocznie iterowanie od nowa.
               Dla każdej tablicy asocjacyjnej istnieje pojedynczy iterator,
               dzielony przez funkcje each(), keys() i values(); może byÄ
               zresetowany przez odczytanie wszystkich elementów tablicy lub
               przez wywoÅanie keys HASH lub values HASH.  JeÅli dodajesz, lub
               kasujesz elementy tablicy asocjacyjnej podczas jej iterowania,
               to może siÄ zdarzyÄ, że niektóre wpisy utracisz, a niektóre
               dostaniesz zduplikowane.  Nie rób wiÄc tego.

               NastÄpujÄcy przykÅad drukuje Årodowisko, podobnie jak program
               printenv(1), lecz w odwrotnej kolejnoÅci:

                   while (($key,$value) = each %ENV) {
                       print "$key=$value\n";
                   }

               Zobacz też keys() i values().

       eof UCHWYTPLIKU

       eof ()

       eof     Zwraca 1, jeÅli nastÄpny odczyt z UCHWYTUPLIKU zwróci koniec
               pliku (eof) lub jeÅli UCHWYTPLIKU nie jest otwarty. UCHWYTPLIKU
               może byÄ wyrażeniem, którego wartoÅÄ daje prawdziwÄ nazwÄ
               uchwytu pliku.  (Zauważ, że ta funkcja w rzeczywistoÅci
               odczytuje znak, a potem wstawia go z powrotem, wiÄc nie jest
               zbyt użyteczna w kontekÅcie interaktywnym.)  Nie czytaj z
               pliku terminalowego  (lub nie woÅaj eof(UCHWYTPLIKU)) po
               osiÄgniÄciu koÅca pliku. Pliki takie, jak terminale mogÄ po
               takim zabiegu utraciÄ warunek koÅca pliku.

               eof bez argumentów, używa jako argumentu ostatniego odczytu
               pliku.  Puste nawiasy () mogÄ wskazywaÄ na pseudo plik,
               zÅożony z plików, wymienionych w linii komend, np. eof()
               dobrze jest używaÄ wewnÄtrz pÄtli while (<>), aby wykryÄ
               koniec ostatniego pliku. PrzykÅady:

                   # resetuj numerowanie linii dla każdego pliku wejÅciowego
                   while (<>) {
                       print "$.\t$_";
                       close(ARGV) if (eof);   # Nie eof().
                   }

                   # wstaw kreski przed ostatniÄ liniÄ ostatniego pliku
                   while (<>) {
                       if (eof()) {
                           print "--------------\n";
                           close(ARGV);        # close or break; is needed if we
                                               # are reading from the terminal
                       }
                       print;
                   }

               Wskazówka praktyczna: w perlu prawie nigdy nie trzeba używaÄ
               eof, ponieważ operatory wejÅciowe zwracajÄ undef gdy nie bÄdÄ
               miaÅy wiÄcej danych.

       eval WYRAÅ»

       eval BLOK
               WYRAÅ» jest przetwarzany i wykonywany tak, jakby byÅ maleÅkim
               programem perla. Jest wywoÅywany w kontekÅcie bieżÄcego
               programu perla, wiÄc wszelkie ustawienia zmiennych lub
               definicje podprocedur i formatów zostajÄ dalej. Zwracana
               wartoÅÄ jest wartoÅciÄ ostatniego wykonanego wyrażenia, lub
               wartoÅciÄ, przekazanÄ przez return, czyli tak jak w
               podprocedurach. Ostatnie wyrażenie jest wykonywane w
               kontekÅcie skalarnym, lub tablicowym, zależnie od kontekstu
               eval.

               JeÅli pojawi siÄ bÅÄd skÅadni lub bÅÄd czasu dziaÅania albo
               jeÅli wykonana zostanie instrukcja die(), to zwrócona zostanie
               wartoÅÄ niezdefiniowana, a $@ zostanie ustawione na komunikat o
               bÅÄdzie.  JeÅli nie byÅo bÅÄdu, $@ bÄdzie ÅaÅcuchem null.
               JeÅli WYRAÅ» zostanie pominiÄte, to wykonywane jest $_.
               Ostatni Årednik, jeÅli taki istnieje, może byÄ pominiÄty w
               wyrażeniu. Ostrzegam jednak, że używanie eval()  nie wycisza
               perla od drukowania ostrzeżeŠna STDERR, ani nie upycha tekstu
               tych komunikatów do $@.  Aby zrobiÄ którÄÅ z tych rzeczy,
               musisz użyÄ zabudowania $SIG{__WARN__}. Zobacz warn() i stronÄ
               perlvar(1).

               Zauważ, że ponieważ eval() przechwytuje krytyczne (w innych
               wypadkach) bÅÄdy, to jest przydatny dla okreÅlania czy
               konkretna wÅaÅciwoÅÄ (taka, jak np. socket(), symlink(), itp.
               jest zaimplementowana. Jest to również mechanizm perla
               obsÅugiwania wyjÄtków, gdzie operator die jest mechanizmem ich
               podnoszenia.

               JeÅli wykonywany kod siÄ nie różni, możesz użyÄ postaci
               eval-BLOK do wychwytywania bÅÄdów czasu dziaÅania, bez
               potrzeby rekompilacji za każdym razem. BÅÄd, jeÅli siÄ pojawi,
               jest wciÄż zwracany w $@.  PrzykÅady:

                   # spowoduj, by dzielenie przez zero nie byÅo krytyczne
                   eval { $answer = $a / $b; }; warn $@ if $@;

                   # to samo, mniej efektywnie
                   eval '$answer = $a / $b'; warn $@ if $@;

                   # bÅÄd czasu kompilacji
                   eval { $answer = };

                   # bÅÄd czasu dziaÅania
                   eval '$answer =';   # ustawia $@

               UżywajÄc postaci eval{} jako puÅapki na wyjÄtki w
               bibliotekach, możesz nie życzyÄ sobie uruchamiania haków
               __DIE__, które mógÅ sobie ustawiÄ użytkownik. Dla tego celu
               można wykorzystaÄ konstrukcjÄ local $SIG{__DIE__}. PrzykÅad:

                   # bardzo prywatna puÅapka na wyjÄtek dzielenia przez zero
                   eval { local $SIG{'__DIE__'}; $answer = $a / $b; }; warn $@ if $@;

               Jest to szczególnie istotne, gdyż haki __DIE__ mogÄ wywoÅywaÄ
               die() ponownie, co ma efekt zmieniania komunikatów o bÅÄdach:

                   # haki __DIE__ mogÄ modyfikowaÄ komunikaty o bÅÄdach
                   {
                      local $SIG{'__DIE__'} = sub { (my $x = $_[0]) =~ s/foo/bar/g; die $x };
                      eval { die "foo foofs here" };
                      print $@ if $@;                # drukuje "bar barfs here"
                   }

               UżywajÄc eval(), powinieneÅ szczególnie uważaÄ, by pamiÄtaÄ
               na co siÄ patrzy gdy:

                   eval $x;            # PRZYPADEK 1
                   eval "$x";          # PRZYPADEK 2

                   eval '$x';          # PRZYPADEK 3
                   eval { $x };        # PRZYPADEK 4

                   eval "\$$x++"       # PRZYPADEK 5
                   $$x++;              # PRZYPADEK 6

               Przypadki 1 i 2 zachowujÄ siÄ jednakowo: uruchamiajÄ kod,
               zawarty w zmiennej $x. (Chociaż przypadek 2 ma ogÅupiajÄce
               cudzysÅowy, powodujÄce, że czytelnik zastanawia siÄ, co
               jeszcze może siÄ zdarzyÄ (nic nie może).)  Przypadki 3 i 4
               zachowujÄ siÄ podobnie: wykonujÄ one kod '$x', który nie robi
               nic poza zwróceniem wartoÅci $x. (Przypadek 4 jest preferowany
               ze wzglÄdów estetycznych, ma też zaletÄ kompilowania podczas
               kompilacji, a nie podczas dziaÅania.) Przypadek 5 jest
               miejscem, gdzie normalnie chciaÅbyÅ użyÄ cudzysÅowów, poza
               tym, że w tej konkretnej sytuacji można użyÄ po prostu
               symbolicznych referencji. Jest tak w przypadku 6.

       exec LISTA
               Funkcja exec() wykonuje komendÄ systemowÄ i NIGDY NIE POWRACA,
               chyba że komenda nie istnieje i jest wykonywana bezpoÅrednio,
               zamiast przez /bin/sh -c (patrz niżej).  JeÅli chcesz
               powróciÄ, użyj zamiast exec() instrukcji system().

               JeÅli w LIÅCIE jest wiÄcej niż jeden argument, lub jeÅli jest
               to tablica z wiÄcej niż jednÄ wartoÅciÄ, wywoÅywany jest
               execvp(3) (z argumentami z LISTY).  JeÅli jest tylko jeden
               argument skalarny, to jest on sprawdzany w poszukiwaniu
               metaznaków powÅoki.  JeÅli sÄ tam jakieÅ znaki, to caÅy
               argument jest przekazywany do przetworzenia przez /bin/sh -c.
               JeÅli nie ma żadnych metaznaków, to argument jest dzielony na
               sÅowa i przekazywany bezpoÅrednio do execvp(3), co jest
               bardziej efektywne.  Uwaga: exec() i system() nie opróżniajÄ
               twojego bufora wejÅciowego, wiÄc możliwe, że aby zapobiec
               utracie wyjÅcia, bÄdziesz musiaÅ ustawiÄ $⎪.  PrzykÅady:

                   exec '/bin/echo', 'Twoimi argumentami sÄ: ', @ARGV;
                   exec "sort $outfile ⎪ uniq";

               JeÅli tak naprawdÄ nie potrzebujesz wywoÅaÄ pierwszego
               argumentu, lecz chcesz oszukaÄ program, który wykonujesz co do
               jego nazwy, to możesz podaÄ program, który chcesz wywoÅaÄ
               jako "obiekt niebezpoÅredni" (bez przecinka) na samym poczÄtku
               LISTY. (Wymusza to zawsze interpretacjÄ LISTY jako listy
               wielowartoÅciowej, nawet jeÅli jest tam tylko pojedynczy
               skalar.) PrzykÅad:

                   $shell = '/bin/csh';
                   exec $shell '-sh';          # udaj, że to powÅoka loginowa

               lub, bardziej bezpoÅrednio,

                   exec {'/bin/csh'} '-sh';    # udaj, że to powÅoka loginowy


       exists WYRAÅ»
               Zwraca TRUE, jeÅli podany klucz asocjacyjny istnieje w tablicy
               asocjacyjnej. WartoÅÄ jest prawdziwa nawet gdy odpowiadajÄca
               kluczowi wartoÅÄ jest niezdefiniowana.

                   print "Istnieje\n" if exists $array{$key};
                   print "Zdefiniowany\n" if defined $array{$key};
                   print "Prawdziwy\n" if $array{$key};

               Element asocjacyjny może byÄ prawdziwy tylko wtedy, gdy jest
               zdefiniowany, a zdefiniowany jeÅli istnieje, lecz odwrotna
               kolejnoÅÄ niekoniecznie jest prawdziwa.

               Zauważ, że WYRAÅ» może byÄ skomplikowany tak daleko, dopóki
               ostateczna operacja jest podejrzeniem klucza asocjacyjnego:

                   if (exists $ref->[$x][$y]{$key}) { ... }


       exit WYRAÅ»
               Wykonuje WYRAÅ» i koÅczy pracÄ z tÄ wartoÅciÄ. (W
               rzeczywistoÅci, wywoÅuje najpierw zdefiniowane procedury END,
               lecz procedury te mogÄ przerwaÄ koÅczenie. Podobnie, również
               przed wyjÅciem woÅane sÄ wszelkie destruktory obiektów.)
               PrzykÅad:

                   $ans = <STDIN>;
                   exit 0 if $ans =~ /^[Xx]/;

               Zobacz też die(). JeÅli WYRAÅ» jest pominiÄte, to praca koÅczy
               siÄ statusem 0. Jedynymi, uniwersalnymi i przenoÅnymi
               wartoÅciami WYRAÅ» sÄ 0 dla sukcesu i 1 dla bÅÄdu; wszelkie
               inne sÄ podstawÄ do dziwnych interpretacji, zależnych od
               Årodowiska, w którym program jest uruchomiony.

               Nie powinieneÅ używaÄ exit() do przerywania podprocedury,
               jeÅli istnieje szansa, że ktoÅ mógÅby chcieÄ ustawiÄ puÅapkÄ
               na bÅÄd. Zamiast tego użyj die(), który może byÄ
               przechwycony przez eval().

       exp WYRAÅ»

       exp     Zwraca e (naturalna podstawa logarytmu) do potÄgi WYRAÅ». JeÅli
               WYRAÅ» jest pominiÄte, zwraca exp($_).

       fcntl UCHWYTPLIKU,FUNKCJA,SKALAR
               Implementuje funkcjÄ fcntl(2). Przypuszczalnie bÄdziesz musiaÅ
               zaznaczyÄ

                   use Fcntl;

               aby móc siÄ niÄ posÅugiwaÄ. Przetwarzanie argumentów i
               zwracanie wartoÅci dziaÅa zupeÅnie jak w ioctl(), opisanym
               niżej. Zauważ, że fcntl() da bÅÄd krytyczny po użyciu na
               maszynie, nie implementujÄcej fcntl(2). Na przykÅad:

                   use Fcntl;
                   fcntl($filehandle, F_GETLK, $packed_return_buffer);


       fileno UCHWYTPLIKU
               Zwraca deskryptor pliku dla uchwytu pliku. Jest to przydatne
               dla konstruowania bitmap dla select(). JeÅli UCHWYTPLIKU jest
               wyrażeniem, to jego wartoÅÄ brana jest za nazwÄ uchwytu pliku.

       flock UCHWYTPLIKU,OPERACJA
               WywoÅuje flock(2), lub emuluje go dla uchwytu UCHWYTPLIKU.
               Zwraca TRUE po sukcesie, FALSE w wypadku jakiegoÅ problemu. Na
               maszynach nie implementujÄcych blokowania flock(2), fcntl(2),
               lub lockf(3), powoduje bÅÄd krytyczny.  flock() jest przenoÅnym
               perlowym interfejsem blokowania plików, choÄ blokuje tylko
               caÅe pliki, a nie rekordy.

               OPERACJA jest jednÄ z LOCK_SH, LOCK_EX, lub LOCK_UN. Możliwa
               jest jeszcze kombinacja z LOCK_NB. StaÅe te majÄ tradycyjne
               wartoÅci 1, 2, 8 i 4, lecz możesz używaÄ nazw symbolicznych
               po zaimportowaniu ich z moduÅu Fcntl, robiÄc to albo
               pojedynczo, albo grupowo, używajÄc tagu ':flock' .  LOCK_SH
               żÄda blokady dzielonej, LOCK_EX żÄda blokady na wyÅÄcznoÅÄ, a
               LOCK_UN zwalnia poprzednio zażÄdanÄ blokadÄ. JeÅli do LOCK_SH
               lub LOCK_EX dodany zostanie LOCK_NB, to flock nie bÄdzie
               blokowaÅ, oczekujÄc na zablokowanie, lecz zakoÅczy dziaÅanie
               natychmiast (aby dowiedzieÄ siÄ, czy uzyskaÅeÅ blokadÄ,
               sprawdź status wyjÅcia).

               Aby zapobiec prawdopodobnie dekoordynacji, perl opróżnia
               UCHWYTPLIKU przed jego (od)blokowaniem.

               Zauważ, że emulacja zbudowana za pomocÄ lockf(3) nie daje
               blokad dzielonych i wymaga, by UCHWYTPLIKU byÅ otwarty z
               zamiarem zapisu.  Jest to semantyka, którÄ implementuje
               lockf(3).  WiÄkszoÅÄ (wszystkie?) systemów jednak implementuje
               lockf(3) na zasadach blokowania fcntl(2), wiÄcej różnice nie
               powinny siÄ dawaÄ we znaki.

               Zauważ też, że niektóre wersje flock() nie mogÄ blokowaÄ
               rzeczy poprzez sieÄ; bÄdziesz musiaÅ użyÄ  do tego bardziej
               specyficznego dla systemu fcntl(). JeÅli chcesz, możesz zmusiÄ
               perla do ignorowania systemowej funkcji flock(2) i używaÄ jego
               wÅasnej, opartej o fcntl(2) emulacji. Robi siÄ to, podajÄc
               programowi Configure przeÅÄcznik -Ud_flock. Trzeba to
               oczywiÅcie zrobiÄ podczas konfigurowania perla jako takiego.

               Oto doklejacz mailboxa dla systemów BSD.

                   use Fcntl ':flock'; # importuj staÅe LOCK_*

                   sub lock {
                       flock(MBOX,LOCK_EX);
                       # a w wypadku, gdyby ktoÅ dokleiÅ
                       # podczas naszego oczekiwania...
                       seek(MBOX, 0, 2);
                   }

                   sub unlock {
                       flock(MBOX,LOCK_UN);
                   }

                   open(MBOX, ">>/usr/spool/mail/$ENV{'USER'}")
                           or die "Nie mogÄ otworzyÄ mailboxa!: $!";

                   lock();
                   print MBOX $msg,"\n\n";
                   unlock();

               Zobacz też stronÄ podrÄcznika. SÄ tam inne przykÅady  flock().

       fork    Wykonuje wywoÅanie systemowe fork(2). Zwraca procesowi
               rodzicielskiemu pid dziecka, a w wÄtku dziecka zwraca zero. W
               wypadku bÅÄdu, zwraca undef.  Uwaga: nieopróżnione bufory
               pozostajÄ nieopróżnione w obydwu procesach, co znaczy, że
               bÄdziesz musiaÅ ustawiÄ $⎪ ($AUTOFLUSH w English) lub wywoÅaÄ
               metodÄ autoflush() z IO::Handle aby zapobiec duplikacji
               wyjÅcia.

               JeÅli fork()'ujesz bez czekania na dzieci, zbierzesz zombies.
               (Osierocone procesy.)

                   $SIG{CHLD} = sub { wait };

               Istnieje też trik podwójnego forka (sprawdzanie bÅÄdów forka
               zostaÅo pominiÄte);

                   unless ($pid = fork) {
                       unless (fork) {
                           exec "co naprawdÄ chcesz robiÄ";
                           die "bez exec";
                           # ... or ...
                           ## (jakiÅ_kod_perla)
                           exit 0;
                       }
                       exit 0;
                   }
                   waitpid($pid,0);

               Zobacz też stronÄ podrÄcznika perlipc(1). SÄ tam dalsze
               przykÅady forkowania i zbierania konajÄcych dzieci.

               Zauważ, że jeÅli twoje forkowane dziecko dziedziczy systemowe
               deskryptory plików, takie jak STDIN i STDOUT, które w
               rzeczywistoÅci sÄ poÅÄczone potokiem lub gniazdem, to jeÅli
               skoÅczysz dziaÅanie, zdalny serwer (taki jak httpd, rsh) nie
               bÄdzie myÅlaÅ, że rzeczywiÅcie skoÅczyÅeÅ.  PowinieneÅ je
               otworzyÄ na nowo na /dev/null.

       format  Zadeklaruj format obrazka, używanego z funkcjÄ write(). Na
               przykÅad:

                   format Something =
                       Test: @<<<<<<<< @⎪⎪⎪⎪⎪ @>>>>>
                             $str,     $%,    '$' . int($num)
                   .

                   $str = "widget";
                   $num = $cost/$quantity;
                   $~ = 'Something';
                   write;

               Dla dalszych opisów i przykÅadów, zobacz stronÄ perlform(1).

       formline OBRAZEK,LISTA
               Jest to funkcja wewnÄtrzna, używana przez formaty. Można jÄ
               jednak wywoÅaÄ też samodzielnie. Formatuje ona (zobacz stronÄ
               perlform(1)) listÄ wartoÅci zależnie od zawartoÅci OBRAZKA,
               umieszczajÄc wyjÅcie w akumulatorze wyjÅcia formatowego, $^A
               ($ACCUMULATOR w English).  Ostatecznie, po dokonaniu write(),
               zawartoÅÄ $^A jest zapisywana do jakiegoÅ uchwytu pliku.
               Możesz jednak odczytaÄ go samodzielnie i ustawiÄ na "".
               Zauważ, że format zazwyczaj wykonuje jeden formline() na
               każdÄ liniÄ formy, lecz sama funkcja fromline nie zwraca uwagi
               na to, ile nowych linii jest osadzonych w OBRAZKU. Znaczy to,
               że tokeny ~ i ~~ bÄdÄ traktowaÄ caÅy OBRAZEK jako liniÄ
               pojedynczÄ. Możesz wiÄc byÄ zmuszonym do używania wielu linii
               form, aby zaimplementowaÄ pojedynczy format zapisu, podobnie
               jak kompilator format.

               Uważaj, jeÅli wstawiasz wokóŠobrazka podwójne
               cudzysÅowy--znak "@" może byÄ wziÄty za poczÄtek nazwy
               tablicy.  formline() zawsze zwraca TRUE. Zobacz stronÄ
               perlform(1) dla dalszych przykÅadów.

       getc UCHWYTPLIKU

       getc    Zwraca nastÄpny znak z pliku wejÅciowego, identyfikowanego
               przez UCHWYTPLIKU. Na koÅcu pliku zwraca ÅaÅcuch null. JeÅli
               UCHWYTPLIKU zostanie pominiÄty, odczyt nastÄpuje ze STDIN.  Nie
               jest to efektywne. Nie może byÄ używane do pobierania
               niebuforowanych pojedynczych znaków. Do tego celu spróbuj
               raczej czegoÅ w rodzaju:

                   if ($BSD_STYLE) {
                       system "stty cbreak </dev/tty >/dev/tty 2>&1";
                   }
                   else {
                       system "stty", '-icanon', 'eol', "\001";
                   }

                   $key = getc(STDIN);

                   if ($BSD_STYLE) {
                       system "stty -cbreak </dev/tty >/dev/tty 2>&1";
                   }
                   else {
                       system "stty", 'icanon', 'eol', '^@'; # ASCII null
                   }
                   print "\n";

               OkreÅlenie, czy $BSD_STYLE powinno byÄ ustawione, pozostawiamy
               jako Äwiczenie dla czytelnika.

               Na systemach, kompatybilnych z  POSIX, bardziej przenoÅna do
               tego celu może byÄ funkcja POSIX::getattr().  Zobacz też
               moduÅ Term::ReadKey z najbliższego mirrora CPAN; szczegóÅy o
               CPAN można znaleÅºÄ we wpisie CPAN ze strony podrÄcznika
               perlmod(1).

       getlogin
               Zwraca bieżÄcy login z /etc/utmp. (o ile istnieje.)  W wypadku
               nulla, użyj getpwuid().

                   $login = getlogin ⎪⎪ getpwuid($<) ⎪⎪ "Kilroy";

               Nie wykorzystuj getlogin() do autentykacji: nie jest tak
               bezpieczny jak getpwuid().

       getpeername GNIZADO
               Zwraca spakowany adres sockaddr drugiego koÅca z poÅÄczenia na
               GNIEŹDZIE.

                   use Socket;
                   $hersockaddr    = getpeername(SOCK);
                   ($port, $iaddr) = unpack_sockaddr_in($hersockaddr);
                   $herhostname    = gethostbyaddr($iaddr, AF_INET);
                   $herstraddr     = inet_ntoa($iaddr);


       getpgrp PID
               Zwraca bieżÄcÄ grupÄ procesu dla podanego PIDa. Aby uzyskaÄ
               grupÄ bieżÄcego procesu, użyj wartoÅci PID równej zero.
               Użycie tej funkcji na maszynie, nie implementujÄcej getpgrp(2)
               podniesie wyjÄtek. JeÅli parametr PID zostanie pominiÄty, to
               zwracana jest grupa bieżÄcego procesu. Zauważ, że wersja
               POSIX getpgrp nie przyjmuje argumentu PID, wiÄc naprawdÄ
               przenoÅna jest tylko konstrukcja PID==0.

       getppid Zwraca identyfikator procesu rodzicielskiego.

       getpriority CZYJE,KTO
               Zwraca bieżÄcy priorytet procesu, grupy procesów, lub
               użytkownika. (Zobacz stronÄ podrÄcznika getpriority(2).)
               Użycie tej funkcji na maszynie nie implementujÄcej
               getpriority(2) podniesie wyjÄtek krytyczny.

       getpwnam NAZWA

       getgrnam NAZWA

       gethostbyname NAZWA

       getnetbyname NAZWA

       getprotobyname NAZWA

       getpwuid UID

       getgrgid GID

       getservbyname NAZWA,PROTO

       gethostbyaddr ADR,TYPADRESU

       getnetbyaddr ADR,TYPADRESU

       getprotobynumber LICZBA

       getservbyport PORT,PROTO

       getpwent

       getgrent

       gethostent

       getnetent

       getprotoent

       getservent

       setpwent

       setgrent

       sethostent STAYOPEN

       setnetent STAYOPEN

       setprotoent STAYOPEN

       setservent STAYOPEN

       endpwent

       endgrent

       endhostent

       endnetent

       endprotoent

       endservent
               Funkcje te dokonujÄ tych samych akcji, co ich odpowiedniki z
               biblioteki systemowej. W kontekÅcie listowym, wartoÅci zwracane
               różnych funkcji `get' sÄ nastÄpujÄce:

                   ($nazwa,$hasÅo,$uid,$gid,
                      $quota,$komentarz,$gcos,$katalog,$shell) = getpw*
                   ($nazwa,$hasÅo,$gid,$czÅonkowie) = getgr*
                   ($nazwa,$aliasy,$typadresu,$dÅugoÅÄ,@addrs) = gethost*
                   ($nazwa,$aliasy,$typadresu,$sieÄ) = getnet*
                   ($nazwa,$aliasy,$protokóÅ) = getproto*
                   ($nazwa,$aliasy,$port,$protokóÅ) = getserv*

               (JeÅli wpis nie istnieje, dostaniesz listÄ null.)

               W kontekÅcie skalarnym, dostajesz nazwÄ. WyjÄtkiem jest funkcja
               podglÄdania wedÅug nazwy, gdzie dostajesz innÄ rzecz, jakÄ by
               ona nie byÅa.  (JeÅli wpis nie istnieje, otrzymujesz wartoÅÄ
               niezdefiniowanÄ.)  Na przykÅad:

                   $uid = getpwnam
                   $nazwa = getpwuid
                   $nazwa = getpwent
                   $gid = getgrnam
                   $nazwa = getgrgid
                   $nazwa = getgrent
                   itd.

               WartoÅÄ $czÅonkowie, zwracana przez getgr*() to oddzielona
               spacjami lista nazw loginowych czÅonków grupy.

               JeÅli w C obsÅugiwana jest zmienna errno, to dla funkcji
               gethost*() jego wartoÅÄ bÄdzie przekazywana przez $?. WartoÅÄ
               @addrs, zwracana przez wykonane wywoÅanie, jest listÄ czystych
               (raw) adresów, zwróconych przez odpowiednie wywoÅanie
               systemowe. W domenie internetowej, każdy adres jest
               czterobajtowy, a rozpakowaÄ go możesz, mówiÄc coÅ w rodzaju:

                   ($a,$b,$c,$d) = unpack('C4',$addr[0]);


       getsockname GNIAZDO
               Zwraca spakowany adres sockaddr tego koÅca poÅÄczenia na
               GNIEŹDZIE.

                   use Socket;
                   $mysockaddr = getsockname(SOCK);
                   ($port, $myaddr) = unpack_sockaddr_in($mysockaddr);


       getsockopt GNIAZDO,POZIOM,NAZWAOPCJI
               Zwraca zażÄdanÄ opcjÄ gniazda, lub wartoÅÄ niezdefiniowanÄ w
               wypadku bÅÄdu.

       glob WYRAÅ»

       glob    Zwraca wartoÅÄ WYRAÅ» z rozwiniÄciami nazwy plików, takimi
               jakich dokonaÅaby powÅoka. Funkcja ta jest wewnÄtrznÄ funkcjÄ
               implementujÄcÄ operator <*.c>, lecz możesz jej użyÄ
               bezpoÅrednio. JeÅli pominiÄte zostanie WYRAÅ», to używane
               bÄdzie $_.  Operator <*.c> jest omówiony bliżej w sekcji I/O
               Operators na stronie perlop(1).

       gmtime WYRAÅ»
               Konwertuje czas zwrócony przez funkcjÄ time do 9 elementowej
               tablicy, w której znajduje siÄ czas zlokalizowany do
               standardowej strefy Greenwich.  Zazwyczaj jest to używane
               nastÄpujÄco:

                   #  0    1    2     3     4    5     6     7     8
                   ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
                                                           gmtime(time);

               Wszystkie elementy tablicy sÄ numeryczne i pochodzÄ wprost ze
               struktury tm.  Ogólnie znaczy to, że $mon ma zakres 0..11, a
               $wday 0..6, z niedzielÄ kryjÄcÄ siÄ pod 0. Dodatkowo, $year
               jest liczbÄ lat od 1900, a nie po prostu dwiema ostatnimi
               cyframi roku.

               JeÅli WYRAÅ» jest pominiÄte, wykonuje gmtime(time()).

               W kontekÅcie skalarnym, zwraca wartoÅÄ ctime(3):

                   $now_string = gmtime;  # np. "Thu Oct 13 04:54:34 1994"

               Zobacz też funkcjÄ timegm(), udostÄpnianÄ przez moduÅ
               Time::Local, a także funkcjÄ strftime(3), dostÄpnÄ przez moduÅ
               POSIX.

       goto ETYKIETA

       goto WYRAÅ»

       goto &NAZWA
               PostaÄ goto-ETYKIETA szuka instrukcji, oznaczonej przez
               ETYKIETA i kontynuuje dziaÅanie od tamtego miejsca. Nie może
               byÄ używane do przechodzenia do konstrukcji, wymagajÄcej
               inicjalizacji, takiej jak podprocedura czy pÄtla foreach. Nie
               może też byÄ używane do przechodzenia do konstrukcji
               optymalizowanej, lub do wychodzenia z bloku, lub podprocedury,
               przekazanej do sort().  Można nim natomiast przeskoczyÄ prawie
               we wszystkie inne miejsca zakresu dynamicznego, wÅÄczajÄc
               wychodzenie z podprocedur, choÄ w tym wypadku lepiej użyÄ
               innej konstrukcji, takiej jak last lub die. Autor perla nigdy
               nie czuŠpotrzeby używania tej postaci goto (tzn. w perlu--C
               jest innÄ sprawÄ).

               PostaÄ goto-WYRAÅ» oczekuje nazwy etykiety, której zakres
               może byÄ rozwiÄzany dynamicznie. Pozwala to na obliczane goto
               per FORTRAN, lecz nie jest zbyt zalecane, jeÅli optymalizujesz
               ze wzglÄdu na ÅatwoÅÄ konserwacji programu:

                   goto ("FOO", "BAR", "GLARCH")[$i];

               PostaÄ goto-&NAZWA jest bardzo magiczna i podmienia wywoÅanie
               do nazwanej podprocedury dla bieżÄcej procedury. Jest to
               używane przez podprocedury AUTOLOAD, które chcÄ ÅadowaÄ inne
               podprocedury, a potem udawaÄ, że ta inna podprocedura zostaÅa
               wywoÅana jako pierwsza (poza tym, wszelkie zmiany @_ bieżÄcej
               podprocedury sÄ przekazywane innej podprocedurze.) Po tym goto,
               nawet caller() nie bÄdzie w stanie powiedzieÄ, że ta procedura
               byÅa wywoÅana pierwsza.

       grep BLOK LISTA

       grep WYRAÅ»,LISTA
               Jest to podobne duchowo, lecz nie identyczne do grep(1) i
               krewnych.  W rzeczywistoÅci, nie jest ograniczone do używania
               wyrażeŠregularnych.

               Wykonuje BLOK lub WYRAŻ dla każdego elementu LISTY
               (ustawiajÄc lokalnie $_ na każdy element) i zwracajÄc listÄ
               wartoÅci, skÅadajÄcych siÄ z tych, dla których wykonane
               wyrażenie byÅo prawdziwe. W kontekÅcie skalarnym, zwraca
               liczbÄ prawdziwych wyrażeÅ.

                   @foo = grep(!/^#/, @bar);    # PozbÄdź siÄ komentarzy

               lub równoważnie,

                   @foo = grep {!/^#/} @bar;    # pozbÄdź siÄ komentarzy

               Zauważ, że skoro $_ jest referencjÄ do wartoÅci listy, może
               byÄ używane do modyfikowania elementów tablicy. Podczas gdy
               jest to przydatne i obsÅugiwane, może to spowodowaÄ też
               nieoczekiwane rezultaty, szczególnie w wypadku gdy LISTA nie
               jest nazwanÄ tablicÄ.

               Grep zwraca aliasy do oryginalnej listy. Znaczy to, że
               modyfikowanie elementu listy zwróconej przez to polecenie,
               modyfikuje też element listy oryginalnej.

       hex WYRAÅ»

       hex     Interpretuje WYRAÅ» jako ÅaÅcuch szesnastkowy i zwraca
               odpowiadajÄcÄ mu wartoÅÄ. (Dla konwersji ÅaÅcuchów, które
               mogÄ siÄ zaczynaÄ od 0, lub 0x, zobacz opis oct, znajdujÄcy siÄ
               gdzieÅ w tym dokumencie.) JeÅli WYRAÅ» zostanie pominiÄte, to
               używane jest $_.

                   print hex '0xAf'; # drukuje '175'
                   print hex 'aF';   # to samo


       import  Nie istnieje wbudowana funkcja import. Jest to zwyczajna metoda
               (podprocedura), definiowana (dziedziczona) przez moduÅy, które
               życzÄ sobie eksportowaÄ nazwy do kolejnych moduÅów. [potem]
               funkcja use() woÅa metodÄ import() dla używanego pakietu.
               Zobacz jeszcze opis use() i stronÄ  perlmod(1) oraz stronÄ
               Exporter.

       index STR,SUBSTR,POZYCJA

       index STR,SUBSTR
               Zwraca pozycjÄ pierwszego pojawienia siÄ SUBSTR w ÅaÅcuchu STR.
               JeÅli POZYCJA jest pominiÄta, to przeszukiwanie rozpoczyna siÄ
               od poczÄtku ÅaÅcucha. WartoÅÄ zwracana jest oparta o 0 (lub
               tego, na co ustawisz zmiennÄ $[ --lecz lepiej tego nie rób).
               JeÅli podciÄg nie może zostaÄ zlokalizowany, zwracana jest
               podstawa - 1, czyli normalnie -1.

       int WYRAÅ»

       int     Zwraca czÄÅÄ caÅkowitÄ z WYRAÅ». JeÅli WYRAÅ» jest pominiÄte,
               używane jest $_.

       ioctl UCHWYTPLIKU,FUNKCJA,SKALAR
               Implementuje funkcjÄ ioctl(2). Przypuszczalnie aby jej używaÄ,
               bÄdziesz musiaÅ powiedzieÄ

                   require "ioctl.ph"; # przypuszczalnie w /usr/local/lib/perl/ioctl.ph

               JeÅli ioctl.ph nie istnieje, lub nie ma wÅaÅciwych definicji,
               bÄdziesz musiaÅ użyÄ swojej wÅasnej, opartej na nagÅówkach C,
               takich jak <sys/ioctl.h>.  (Istnieje skrypt perla o nazwie
               h2ph(1), która pomaga w konwersji, lecz jest to nietrywialna
               sprawa.) SKALAR jest wartoÅciÄ zapisywanÄ, lub odczytywanÄ,
               zależnie od FUNKCJI--wskaźnik do wartoÅci ÅaÅcuchowej SKALARA
               bÄdzie przekazany jako trzeci argument wÅaÅciwego wywoÅania
               ioctl. (JeÅli SKALAR nie ma wartoÅci ÅaÅcuchowej, lecz ma
               numerycznÄ, to zostanie przekazana ta wartoÅÄ zamiast
               wskaźnika do ÅaÅcucha.  Aby zapewniÄ, że bÄdzie to prawdziwe,
               przed użyciem dodaj do skalara 0). Do manipulowania na
               wartoÅciach struktur, używanych przez ioctl() przydatne sÄ
               funkcje pack() i unpack().  NastÄpujÄcy przykÅad ustawia znak
               kasowania na DEL.

                   require 'ioctl.ph';
                   $getp = &TIOCGETP;
                   die "NO TIOCGETP" if $@ ⎪⎪ !$getp;
                   $sgttyb_t = "ccccs";                # 4 znaki i short
                   if (ioctl(STDIN,$getp,$sgttyb)) {
                       @ary = unpack($sgttyb_t,$sgttyb);
                       $ary[2] = 127;
                       $sgttyb = pack($sgttyb_t,@ary);
                       ioctl(STDIN,&TIOCSETP,$sgttyb)
                           ⎪⎪ die "Nie mogÄ wykonaÄ ioctl: $!";
                   }

               WartoÅÄ zwracana ioctl (i fcntl) jest nastÄpujÄca:

                       gdy OS zwraca:          to Perl zwraca:
                           -1               wartoÅÄ niezdefiniowanÄ
                            0                ÅaÅcuch "0 but true"
                        coÅ innego                 to samo

               Tak wiÄc, mimo że perl zwraca po sukcesie TRUE, a w wypadku
               niepowodzenia FALSE, możesz Åatwo okreÅliÄ rzeczywistÄ wartoÅÄ
               zwróconÄ przez system operacyjny:

                   ($retval = ioctl(...)) ⎪⎪ ($retval = -1);
                   printf "System zwróciŠ%d\n", $retval;


       join WYRAÅ»,LISTA
               ÅÄczy osobne ÅaÅcuchy LISTY w pojedynczy ÅaÅcuch, w którym
               pola sÄ rozdzielone wartoÅciami WYRAÅ». Zwraca ten ÅaÅcuch.
               PrzykÅad:

                   $_ = join(':', $login,$passwd,$uid,$gid,$gcos,$home,$shell);

               Zobacz też opis split.

       keys HASH
               Zwraca normalna tablicÄ, skÅadajÄcÄ siÄ z wszystkich kluczy
               nazwanej tablicy asocjacyjnej. (W kontekÅcie skalarnym, zwraca
               liczbÄ kluczy.) Klucze sÄ zwracane w doÅÄ losowej kolejnoÅci,
               lecz w tej samej, w której swoje wartoÅci produkujÄ funkcje
               values() i each() (o ile tablica asocjacyjna nie byÅa [w
               miÄdzyczasie] zmieniana).  W efekcie ubocznym, funkcja resetuje
               iterator tablicy.

               A oto jeszcze inny sposób na wydrukowanie Årodowiska:

                   @keys = keys %ENV;
                   @values = values %ENV;
                   while ($#keys >= 0) {
                       print pop(@keys), '=', pop(@values), "\n";
                   }

               a co, jeÅli by je posortowaÄ wedÅug klucza:

                   foreach $key (sort(keys %ENV)) {
                       print $key, '=', $ENV{$key}, "\n";
                   }

               Aby posortowaÄ tablicÄ wedÅug wartoÅci, bÄdziesz musiaÅ użyÄ
               funkcji sort. Oto numeryczne posortowanie tablicy asocjacyjnej
               wedÅug jej wartoÅci:

                   foreach $key (sort { $hash{$b} <=> $hash{$a} } keys %hash)) {
                       printf "%4d %s\n", $hash{$key}, $key;
                   }

               Jako lwartoÅÄ, keys umożliwia zwiÄkszanie liczby komórek
               asocjacyjnych, zaalokowanych dla danej tablicy asocjacyjnej.
               Możesz zyskaÄ na efektywnoÅci, jeÅli tablica ma byÄ duża.
               (Jest to podobne do pre-rozszerzania tablicy przez
               przeznaczanie $#array wiÄkszego numeru.)  JeÅli powiesz

                   keys %hash = 200;

               to %hash bÄdzie  miaÅ co najmniej 200 zaalokowanych komórek.
               Komórki te bÄdÄ utrzymywane nawet, jeÅli zrobisz %hash = ().
               JeÅli chcesz zwolniÄ zasób wewnÄtrz zakresu, użyj undef
               %hash.  KorzystajÄc z powyższej wÅaÅciwoÅci, zawsze można
               zmniejszyÄ liczbÄ zaalokowanych komórek.

       kill LISTA
               WysyÅa sygnaÅ do listy procesów. Pierwszy element listy musi
               byÄ nazwÄ sygnaÅu. Zwraca liczbÄ procesów, do których udaÅo
               siÄ przesÅaÄ sygnaÅ.

                   $cnt = kill 1, $child1, $child2;
                   kill 9, @goners;

               W przeciwieÅstwie do zachowania w powÅoce, w perlu jeÅli
               -1SYGNAŠjest ujemny, to killuje grupy procesów, zamiast
               procesów. (W Systemie V, ujemny numer PROCESU odnosi siÄ też
               do grup procesów, lecz nie jest to przenoÅne.) Oznacza to, że
               zazwyczaj chcesz przekazywaÄ sygnaÅy dodatnie. Możesz też
               używaÄ nazw sygnaÅów w cudzysÅowach. Zobacz jeszcze sekcjÄ
               Signals w podrÄczniku perlipc(1).

       last ETYKIETA

       last    Komenda last jest podobna do instrukcji break z C (używanej w
               pÄtlach); przerywa natychmiastowo pÄtlÄ. JeÅli pominiÄty jest
               parametr ETYKIETY, to komenda odnosi siÄ do najbardziej
               wewnÄtrznej pÄtli zamykajÄcej. Potencjalna instrukcja bloku
               continue nie jest wykonywana:

                   LINE: while (<STDIN>) {
                       last LINE if /^$/;      # zakoÅcz po skoÅczeniu z nagÅówkiem
                       ...
                   }


       lc WYRAÅ»

       lc      Zwraca WYRAÅ» w maÅych literach. Jest to wewnÄtrzna funkcja,
               implementujÄca escape \L w ÅaÅcuchach ujÄtych w cudzysÅowy.
               JeÅli wÅÄczone jest use locale, to szanuje bieżÄce locale
               LC_CTYPE.  Zobacz stronÄ podrÄcznika perllocale(1).

               JeÅli WYRAÅ» jest pominiÄte, używane jest $_.

       lcfirst WYRAÅ»

       lcfirst Zwraca wartoÅÄ WYRAÅ», w którym pierwszy znak jest zastÄpiony
               maÅÄ literÄ. Jest to funkcja wewnÄtrzna, implementujÄca escape
               \l w ÅaÅcuchach ujÄtych w podwójne cudzysÅowy. JeÅli wÅÄczone
               jest use locale, to szanuje bieżÄce locale LC_CTYPE. Zobacz
               stronÄ podrÄcznika perllocale(1).

               JeÅli WYRAÅ» jest pominiÄte, używane jest $_.

       length WYRAÅ»

       length  Zwraca dÅugoÅÄ w znakach wartoÅci WYRAÅ». JeÅli WYRAÅ» jest
               pominiÄte, zwracana jest dÅugoÅÄ $_.

       link STARYPLIK,NOWYPLIK
               Tworzy nowÄ nazwÄ pliku, dowiÄzanÄ do starej nazwy pliku. Po
               sukcesie zwraca 1, a w przeciwnym wypadku 0.

       listen GNIAZDO,ROZMIARKOLEJKI
               Robi to samo, co wywoÅanie systemowe listen(2). Zwraca TRUE po
               sukcesie, a w przeciwnym wypadku FALSE. Zobacz przykÅad w
               sekcji Sockets: Client/Server Communication w podrÄczniku
               perlipc(1).

       local WYRAÅ»
               Local modyfikuje wymienione zmienne tak, że sÄ lokalne w
               otaczajÄcym je bloku, podprocedurze, eval{}, lub do. JeÅli
               wymieniona jest wiÄcej niż jedna wartoÅÄ, to lista musi byÄ
               umieszczona w nawiasach. Zobacz sekcjÄ Temporary Values via
               local() w podrÄczniku perlsub(1).

               Zamiast local(), czÄsto raczej wolaÅbyÅ użyÄ my(), gdyż to
               pierwsze tak naprawdÄ nie jest tym czym siÄ wiÄkszoÅci ludzi
               wydaje.  OdsyÅam do sekcji Private Variables via my() w
               podrÄczniku perlsub(1).

       localtime WYRAÅ»
               Konwertuje czas, zwrócony przez funkcjÄ time na 9-elementowÄ
               tablicÄ, której czas jest zanalizowany dla lokalnej strefy
               czasowej. Zazwyczaj jest to używane nastÄpujÄco:

                   #  0    1    2     3     4    5     6     7     8
                   ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
                                                               localtime(time);

               Wszystkie elementy tablicy sÄ numeryczne i pochodzÄ wprost ze
               struktury tm.  W rzeczywistoÅci znaczy to, że $mon ma zasiÄg
               0..11, a $wday 0..6, gdzie 0 oznacza niedzielÄ. Poza tym, $year
               jest liczbÄ lat ot 1900 roku, tj. rok 123 oznacza 2023.

               JeÅli WYRAÅ» zostanie pominiÄte, to używany jest czas bieżÄcy
               (localtime(time)).

               W kontekÅcie skalarnym, zwraca wartoÅÄ ctime(3):

                   $now_string = localtime;  # np., "Thu Oct 13 04:54:34 1994"

               Zobacz też moduŠTime::Local i funkcje  strftime(3) i
               mktime(3), dostÄpne przez moduÅ POSIX.

       log WYRAÅ»

       log     Zwraca logarytm (podstawa e) z WYRAÅ». JeÅli WYRAÅ» jest
               pominiÄte, zwraca wartoÅÄ dla $_.

       lstat UCHWYTPLIKU

       lstat WYRAÅ»

       lstat   Robi to samo, co funkcja stat(), lecz zamiast plików, na
               które wskazujÄ dowiÄzania symboliczne, testuje same
               dowiÄzania. JeÅli twój system nie obsÅuguje dowiÄzaÅ
               symbolicznych, dokonywany jest zwykÅy stat().

               JeÅli WYRAÅ» jest pominiÄte, używane jest $_.

       m//     Operator porównania. Zobacz stronÄ perlop(1).

       map BLOK LISTA

       map WYRAÅ»,LISTA
               Analizuje BLOK lub WYRAŻ dla każdego elementu LISTY
               (ustawiajÄc lokalnie $_ na każdy element) i zwraca wartoÅÄ
               listowÄ, zÅożonÄ z wyników każdego analizowania. BLOK lub
               WYRAÅ» jest analizowany w kontekÅcie listowym, wiÄc każdy
               element LISTY może daÄ zero, jeden, lub wiÄcej elementów w
               wartoÅci zwracanej.

                   @chars = map(chr, @nums);

               tÅumaczy listÄ liczb na odpowiadajÄce im znaki. A

                   %hash = map { getkey($_) => $_ } @array;

               jest tylko Åmiesznym sposobem zapisania

                   %hash = ();
                   foreach $_ (@array) {
                       $hash{getkey($_)} = $_;
                   }


       mkdir NAZWAPLIKU,PRAWA
               Tworzy katalog, podany jako NAZWAPLIKU, którego prawa sÄ
               okreÅlone przez PRAWA (zmodyfikowane przez umaskÄ). JeÅli
               operacja zakoÅczy siÄ sukcesem, zwraca 1, w przeciwnym wypadku
               zwraca 0 i ustawia $!  (errno).

       msgctl ID,CMD,ARG
               WoÅa funkcjÄ IPC msgctl(2) z Systemu V. JeÅli CMd jest
               &IPC_STAT, to ARG musi byÄ zmiennÄ, która bÄdzie przechowywaÄ
               zwróconÄ strukturÄ msquid_ds. WartoÅÄ zwracana tej funkcji
               jest podobna do ioctl: dla bÅÄdu wartoÅÄ niezdefiniowana, "0
               but true" dla zera, oraz rzeczywista wartoÅÄ zwracana dla
               innych wypadków.

       msgget KLUCZ,FLAGI
               WoÅa funkcjÄ IPC msgget(2) z Systemu V. Zwraca identyfikator
               kolejki komunikatów, lub wartoÅÄ niezdefiniowanÄ (w wypadku
               bÅÄdu).

       msgsnd ID,MSG,FLAGI
               WoÅa funkcjÄ IPC msgsnd(2) z Systemu V, która przesyÅa
               komunikat MSG do kolejki komunikatów ID. MSG musi zaczynaÄ siÄ
               wartoÅciÄ long int, okreÅlajÄcÄ typ, którÄ można utworzyÄ z
               pomocÄ pack("l",$typ).  Zwraca TRUE po sukcesie i FALSE w
               wypadku bÅÄdu.

       msgrcv ID,VAR,ROZMIAR,TYP,FLAGI
               WoÅa funkcjÄ IPC msgrcv(2) z Systemu V. Funkcja odbiera
               komunikat z kolejki komunikatów ID i zapisuje go do zmiennej
               VAR.  Maksymalna odbierana wiadomoÅÄ ma wielkoÅÄ ROZMIAR.
               Zauważ, że gdy wiadomoÅÄ jest odbierana, to jej typ bÄdzie
               pierwszÄ rzeczÄ, lÄdujÄcÄ w VAR, a maksymalna dÅugoÅÄ VAR to
               ROZMIAR plus rozmiar typu komunikatu. Zwraca TRUE po sukcesie,
               a FALSE w wypadku bÅÄdu. [przyp.tÅum.: pole TYPE generalnie w
               IPC oznacza typ, zdefiniowany w pierwszych 4 bajtach
               komunikatu]

       my WYRAÅ»
               Instrukcja "my" deklaruje wymienione zmienne jako lokalne dla
               zamkniÄtego bloku, podprocedury, eval lub pliku potraktowanego
               instrukcjami do/require/use.  JeÅli wymieniono wiÄcej niż
               jednÄ wartoÅÄ, lista musi byÄ ujÄta w nawiasy.  Zobacz jeszcze
               sekcjÄ Private Variables via my() w podrÄczniku perlsub(1).

       next ETYKIETA

       next    Komenda next jest podobna do instrukcji continue w C;
               rozpoczyna kolejnÄ iteracjÄ pÄtli:

                   LINE: while (<STDIN>) {
                       next LINE if /^#/;      # pozbÄdź siÄ komentarzy
                       ...
                   }

               Zauważ, że jeÅli powyżej byÅ blok continue, to zostaÅby on
               wykonany nawet na usuniÄtych liniach. JeÅli argument ETYKIETY
               jest pominiÄty, komenda odnosi siÄ do najbardziej wewnÄtrznej
               otaczajÄcej pÄtli.

       no Module LISTA
               Zobacz funkcjÄ "use", gdzie "no" jest przeciwieÅstwem.

       oct WYRAÅ»

       oct     Interpretuje WYRAÅ» jako ÅaÅcuch ósemkowy i zwraca
               odpowiadajÄcÄ wartoÅÄ. (JeÅli WYRAÅ» zaczyna siÄ od 0x, jest
               interpretowane jako ÅaÅcuch szesnastkowy.) NastÄpujÄcy kod
               obsÅuguje liczby dziesiÄtne, ósemkowe i szesnastkowe w
               standardowej notacji perla lub C:

                   $val = oct($val) if $val =~ /^0/;

               JeÅli WYRAÅ» jest pominiÄte, używa $_. Funkcja ta jest czÄsto
               używana gdy ÅaÅcuch w rodzaju "644" musi byÄ np.
               przekonwertowany na prawa pliku. (Chociaż perl automatycznie
               konwertuje ÅaÅcuchy na liczby, zgodnie z potrzebami, to
               automatyczna konwersja zakÅada podstawÄ 10.)

       open UCHWYTPLIKU,WYRAÅ»

       open UCHWYTPLIKU
               Otwiera plik, którego nazwa jest przekazywana WYRAŻ, a
               nastÄpnie wiÄże go z UCHWYTEMPLIKU. JeÅli UCHWYTPLIKU jest
               wyrażeniem, to jego wartoÅÄ jest używana jako nazwa
               rzeczywistego uchwytu pliku.  JeÅli WYRAÅ» jest pominiÄte, to
               przyjmuje siÄ, że zmienna skalarna o tej samej nazwie co
               UCHWYTPLIKU zawiera nazwÄ pliku.  (Zauważ, że zmienne
               leksykalne--te, deklarowane z pomocÄ my--nie bÄdÄ w ten sposób
               dziaÅaÅy.)

               JeÅli nazwa pliku rozpoczyna siÄ od '<' lub od niczego, plik
               jest otwierany dla wejÅcia (odczytu). JeÅli nazwa pliku
               rozpoczyna siÄ od '>', plik jest kasowany i otwierany dla
               zapisu. JeÅli nazwa pliku rozpoczyna siÄ od '>>', plik jest
               otwierany dla dopisywania.  JeÅli przed '>' lub '<' postawisz
               '+', oznacza to, że chcesz zarówno czytaÄ, jak i zapisywaÄ do
               pliku. Tryb '+<' jest zazwyczaj preferowany dla poprawek
               odczytu/zapisu--tryb '+>' najpierw pobiÅby plik. Przedrostek i
               nazwa pliku mogÄ byÄ oddzielone spacjami. Wszystkie te
               przedrostki odpowiadajÄ trybom otwarcia funkcji fopen(3).

               JeÅli nazwa pliku rozpoczyna siÄ od "⎪", to plik jest rozumiany
               jako komenda, do której potokiem przesyÅane jest wyjÅcie.
               Odwrotnie, jeÅli nazwa pliku koÅczy siÄ tym symbolem, to nazwa
               pliku jest interpretowana jako komenda, której wyjÅcie jest
               przesyÅane potokiem na nasze wejÅcie (Zobacz sekcjÄ Using
               open() for IPC w podrÄczniku perlipc(1)).  (Możesz nie mieÄ
               czystego open(), powodujÄcego, że komenda jest zarówno
               potokiem wejÅciowym, jak i wyjÅciowym. SÄ jednak na to rady,
               zobacz stronÄ podrÄcznika IPC::Open2, IPC::Open3, oraz sekcjÄ
               Bidirectional Communication w podrÄczniku perlipc(1).)

               Otwieranie '-' otwiera strumieÅ STDIN, a otwieranie '>-'
               otwiera STDOUT.  Open po sukcesie zwraca zero, a w przeciwnym
               wypadku wartoÅÄ niezdefiniowanÄ.  JeÅli open otworzyÅ potok,
               wartoÅÄ zwracana jest identyfikatorem podprocesu (pid).

               JeÅli masz na tyle pecha, że pracujesz z perlem na systemie,
               który odróżnia pliki tekstowe i binarne (nowoczesne systemy
               ich nie rozróżniajÄ), to powinieneÅ poczytaÄ o funkcji
               binmode, opisanej gdzieÅ w tym dokumencie. Systemy, wymagajÄce
               binmode rozpoznaje siÄ po ich formacie pliku tekstowego.
               Systemy takie, jak Unix i Plan9, które oddzielajÄ linie
               pojedynczym znakiem i które kodujÄ go w C jako "\n", nie
               potrzebujÄ binmode.  Reszta tak.

               PrzykÅady:

                   $ARTICLE = 100;
                   open ARTICLE or die "Nie mogÄ znaleÅºÄ artykuÅu $ARTICLE: $!\n";
                   while (<ARTICLE>) {...

                   open(LOG, '>>/usr/spool/news/twitlog'); # (log jest zarezerwowany)

                   open(DBASE, '+<dbase.mine');            # otwórz dla odnowienia

                   open(ARTICLE, "caesar <$article ⎪");    # dekoduj artykuÅ

                   open(EXTRACT, "⎪sort >/tmp/Tmp$$");     # $$ jest pidem naszego procesu

                   # przetwórz listÄ argumentów plików, wraz z wszelkimi zaÅÄcznikami

                   foreach $file (@ARGV) {
                       process($file, 'fh00');
                   }

                   sub process {
                       local($filename, $input) = @_;
                       $input++;               # jest to inkrementacja ÅaÅcuchowa
                       unless (open($input, $filename)) {
                           print STDERR "Nie mogÄ otworzyÄ $filename: $!\n";
                           return;
                       }

                       while (<$input>) {              # note use of indirection
                           if (/^#include "(.*)"/) {
                               process($1, $input);
                               next;
                           }
                           ...         # cokolwiek
                       }
                   }

               Możesz również, zgodnie z tradycjÄ powÅoki Bourne, podaÄ
               WYRAÅ», zaczynajÄcy siÄ od ">&", co oznacza, że reszta
               ÅaÅcucha jest interpretowana jako nazwa uchwytu pliku (lub
               numerycznego deskryptora pliku), który należy zduplikowaÄ i
               otworzyÄ. & można użyÄ po >, >>, <, +>, +>>, i +<.  Tryb,
               który podasz, powinien odpowiadaÄ trybowi oryginalnego uchwytu
               pliku. (Duplikowanie uchwytów pliku nie pobiera na konto
               żadnych istniejÄcych zawartoÅci buforów stdio.)  Oto skrypt,
               który zachowuje, przekierowuje i odÅwieża STDOUT i STDERR:

                   #!/usr/bin/perl
                   open(SAVEOUT, ">&STDOUT");
                   open(SAVEERR, ">&STDERR");

                   open(STDOUT, ">foo.out") ⎪⎪ die "Nie mogÄ przekierowaÄ stdout";
                   open(STDERR, ">&STDOUT") ⎪⎪ die "Nie mogÄ zduplikowaÄ stdout";

                   select(STDERR); $⎪ = 1;     # zrób niebuforowane
                   select(STDOUT); $⎪ = 1;     # j/w

                   print STDOUT "stdout 1\n";  # dziaÅa to też dla
                   print STDERR "stderr 1\n";  # podprocesów

                   close(STDOUT);
                   close(STDERR);

                   open(STDOUT, ">&SAVEOUT");
                   open(STDERR, ">&SAVEERR");

                   print STDOUT "stdout 2\n";
                   print STDERR "stderr 2\n";

               Możesz podaÄ "<&=N", gdzie N jest liczbÄ. Perl wtedy dokona
               operacji równoważnej fdopen(3) z C. Na przykÅad:

                   open(FILEHANDLE, "<&=$fd")

               JeÅli otwierasz potok do komendy "-", np. albo "⎪-" albo "-⎪",
               to dokonywany jest niejawny fork, a zwrócona wartoÅÄ open jest
               wewnÄtrz procesu rodzicielskiego pidem potomka, a w wÄtku
               potomka zerem. (Aby okreÅliÄ, czy open byÅ pomyÅlny, użyj
               defined($pid).)  Uchwyt pliku u rodzica zachowuje siÄ
               normalnie, lecz i/o dla tego uchwytu jest przesyÅane przez
               potok STDOUT/STDIN procesu potomnego.  W procesie potomny
               uchwyt nie jest otwierany--i/o jest z/do nowego STDOUT lub
               STDIN. Zazwyczaj jest to używane jak normalny potokowy open,
               lecz daje lepszÄ kontrolÄ nad wywoÅywaniem komendy potoku, np.
               gdy pracujesz w suid i nie chcesz byÄ zmuszonym do skanowania
               komend powÅoki w poszukiwaniu metaznaków.  NastÄpujÄce pary sÄ
               mniej lub bardziej równoważne:

                   open(FOO, "⎪tr '[a-z]' '[A-Z]'");
                   open(FOO, "⎪-") ⎪⎪ exec 'tr', '[a-z]', '[A-Z]';

                   open(FOO, "cat -n '$file'⎪");
                   open(FOO, "-⎪") ⎪⎪ exec 'cat', '-n', $file;

               Dla szczegóÅów, zobacz sekcjÄ Safe Pipe Opens w podrÄczniku
               perlipc(1).

               UWAGA: Przy każdej operacji, dokonujÄcej forkowania,
               nieopróżnione bufory pozostajÄ takie w obydwu procesach, co
               znaczy, że lepiej ustawiÄ $⎪, aby zapobiec duplikowaniu
               wyjÅcia.

               Zamykanie potokowego uchwytu pliku powoduje, że proces
               rodzicielski czeka, aż dziecko zakoÅczy i zwraca wartoÅÄ
               statusu w $?.

               JeÅli używasz konstruktora z pakietu IO::Handle (lub z jego
               podklas, takich jak IO::File czy IO::Socket), możesz generowaÄ
               anonimowe uchwyty plików, które majÄ zakres dowolnych
               zmiennych, które utrzymujÄ do nich referencje. ZamykajÄ siÄ
               one automatycznie po wyjÅciu z zakresu:

                   use IO::File;
                   ...
                   sub read_myfile_munged {
                       my $ALL = shift;
                       my $handle = new IO::File;
                       open($handle, "myfile") or die "myfile: $!";
                       $first = <$handle>
                           or return ();     # Automatyczne zamkniÄcie tutaj.
                       mung $first or die "mung failed";       # Lub tutaj.
                       return $first, <$handle> if $ALL;       # Lub tutaj.
                       $first;                                 # Lub tutaj.
                   }

               Nazwa pliku, która jest przekazana open, przechodzi operacjÄ
               usuwania prowadzÄcych i koÅczÄcych biaÅych spacji. Aby otworzyÄ
               plik, posiadajÄcy te dziwne znaki, trzeba je chroniÄ:

                   $file =~ s#^(\s)#./$1#;
                   open(FOO, "< $file\0");

               JeÅli chcesz użyÄ prawdziwego, znanego z C open() (zobacz
               stronÄ open(2)), to powinieneÅ użyÄ funkcji sysopen(). Jest to
               inny sposób chronienia nazw plików przed interpretacjÄ. Np:

                   use IO::Handle;
                   sysopen(HANDLE, $path, O_RDWR⎪O_CREAT⎪O_EXCL, 0700)
                       or die "sysopen $path: $!";
                   HANDLE->autoflush(1);
                   HANDLE->print("stuff $$\n");
                   seek(HANDLE, 0, 0);
                   print "Plik zawiera: ", <HANDLE>;

               Dla dalszych detali o miksowaniu odczytywania i zapisywania,
               obejrzyj opis seek(), znajdujÄcy siÄ gdzie indziej w tym
               dokumencie.

       opendir UCHWYTKATALOGU,WYRAÅ»
               Otwiera katalog o nazwie WYRAŻ. Otwarty uchwyt można
               przetwarzaÄ funkcjami readdir(), telldir(), seekdir(),
               rewinddir(), i closedir().  Po sukcesie zwraca TRUE. Uchwyty
               katalogów majÄ swojÄ wÅasnÄ przestrzeÅ nazw. Jest ona
               oddzielna od uchwytów plików.

       ord WYRAÅ»

       ord     Zwraca numerycznÄ wartoÅÄ ascii pierwszego znaku WYRAÅ». JeÅli
               WYRAÅ» zostaÅo pominiÄte, używane jest $_. Dla operacji
               odwrotnej, zobacz opis chr, znajdujÄcy siÄ gdzieÅ w tym
               dokumencie.

       pack WZORZEC,LISTA
               Pobiera tablicÄ lub listÄ wartoÅci i pakuje jÄ w strukturÄ
               binarnÄ, zwracajÄc ÅaÅcuch, zawierajÄcy tÄ strukturÄ. WZORZEC
               jest sekwencjÄ znaków, które pokazujÄ kolejnoÅÄ i typy
               wartoÅci. SÄ one nastÄpujÄce:

                   A   ÅaÅcuch ascii, dopeÅniany spacjami.
                   a   ÅaÅcuch ascii, dopeÅniany przez null.
                   b   ÅaÅcuch bitowy (wznoszÄca kolejnoÅÄ bitów, jak w vec()).
                   B   ÅaÅcuch bitowy (malejÄca kolejnoÅÄ bitów).
                   h   ÅaÅcuch szesnastkowy (najpierw niski nibble).
                   H   ÅaÅcuch szesnastkowy (najpierw wysoki nibble).

                   c   WartoÅÄ char ze znakiem.
                   C   WartoÅÄ char bez znaku.

                   s   WartoÅÄ short.
                   S   WartoÅÄ short bez znaku.
                         (Ten 'short' jest _dokÅadnie_ 16 bitowy, co może siÄ różniÄ od
                         tego, co lokalny kompilator C nazywa jako 'short'.)

                   i   WartoÅÄ int ze znakiem.
                   I   WartoÅÄ int bez znaku.
                         (Ten 'int' jest przynajmniej 32 bitowy. DokÅadny rozmiar zależy
                          od tego, co lokalny kompilator C uważa za 'int' i może byÄ nawet
                          wiÄksze niż 'long', opisywany dalej.)

                   l   WartoÅÄ long ze znakiem.
                   L   WartoÅÄ long bez znaku.
                         (Ta wartoÅÄ 'long' jest _dokÅadnie_ 32 bitowa, co może siÄ
                          różniÄ od tego, co lokalny kompilator C uważa za 'long'.)

                   n   Short w porzÄdku sieciowym (big-endian).
                   N   Long w porzÄdku sieciowym (big-endian).
                   v   Short w porzÄdku "VAX" (little-endian).
                   V   Long w porzÄdku "VAX" (little-endian).
                         (Te 'short' i 'long' sÄ _dokÅadnie_ 16 i
                          32 bitowe (odpowiednio).)

                   f   Float pojedynczej precyzji w formacie macierzystym.
                   d   Float podwójnej precyzji w formacie macierzystym.

                   p   Wskaźnik do ÅaÅcucha zakoÅczonego zerem.
                   P   Wskaźnik do struktury (ÅaÅcuch o ustalonej dÅugoÅci).

                   u   Uuencodowany ÅaÅcuch.

                   w   Skompresowany integer BER. Jego bajty reprezentujÄ caÅkowity
                       integer o podstawie 128, najpierw bardziej znaczÄce cyfry,
                       z tak maÅÄ iloÅciÄ cyfr, jak tylko siÄ da. Ãsmy bit jest ustawiany
                       na każdym bajcie, poza ostatnim.

                   x   Bajt null.
                   X   Wstecz o bajt (?) (Back up a byte).
                   @   WypeÅnienie null do bezwzglÄdnej pozycji (?)
                       (Null fill to absolute position).

               Po każdej literze może opcjonalnie nastÄpowaÄ liczba, która
               podaje licznik powtórzeÅ. Dla wszystkich typów, poza "a",
               "A", "b", "B", "h", "H", i "P", funkcja pack pożre tyle samo
               wartoÅci z LISTY.  Gwiazdka (*) dla licznika powtórzeÅ,
               oznacza użycie wszystkich elementów, które pozostaÅy. Typy
               "a" i "A" pobierajÄ tylko jednÄ wartoÅÄ, lecz pakujÄ jÄ jako
               ÅaÅcuch o podanej dÅugoÅci, wypeÅniajÄc jÄ w razie potrzeby
               zerami, lub spacjami. (Podczas rozpakowywania, "A" zdejmuje
               koÅczÄce spacje i zera, lecz "a" tego nie robi.)  Podobnie,
               pola "b" i "B" pakujÄ ÅaÅcuchy, które sÄ dÅugoÅci tylu bitów.
               "h" i "H" pakujÄ ÅaÅcuchy, które sÄ dÅugoÅci tylu nibblów.
               "P" pakuje wskaźnik do struktury, której rozmiar jest
               wskazywany przez dÅugoÅÄ. Liczby rzeczywiste (float, double) sÄ
               tylko w formacie macierzystym maszyny; z powodu wieloÅci
               formatów zmiennoprzecinkowych i braku standardowej
               reprezentacji "sieciowej", nie ma żadnego sposobu uniwersalnej
               wymiany. Oznacza to, że spakowane dane zmiennoprzecinkowe,
               zapisane na jednej maszynie, mogÄ nie byÄ odczytywalne na innej
               - nawet jeÅli obydwie używajÄ arytmetyki zmiennoprzecinkowej
               IEEE (gdyż endainowoÅÄ pamiÄci nie jest czÄÅciÄ specyfikacji
               IEEE). Zauważ, że perl używa wewnÄtrznie dla wszystkich
               obliczeŠnumerycznych reprezentacji double i że konwersja z
               double na float, a potem z powrotem na double powoduje utratÄ
               precyzji (np. unpack("f", pack("f", $foo)) nie bÄdzie w
               ogólnym przypadku siÄ równaÄ $foo).

               PrzykÅady:

                   $foo = pack("cccc",65,66,67,68);
                   # foo to "ABCD"
                   $foo = pack("c4",65,66,67,68);
                   # to samo

                   $foo = pack("ccxxcc",65,66,67,68);
                   # foo to "AB\0\0CD"

                   $foo = pack("s2",1,2);
                   # "\1\0\2\0" na little-endian
                   # "\0\1\0\2" na big-endian

                   $foo = pack("a4","abcd","x","y","z");
                   # "abcd"

                   $foo = pack("aaaa","abcd","x","y","z");
                   # "axyz"

                   $foo = pack("a14","abcdefg");
                   # "abcdefg\0\0\0\0\0\0\0"

                   $foo = pack("i9pl", gmtime);
                   # rzeczywista struktura tm (przynajmniej na moim systemie)

                   sub bintodec {
                       unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
                   }

               Ten sam wzorzec może byÄ ogólnie używany też w funkcji
               unpack.

       package PRZESTRZEÅNAZW
               Deklaruje jednostkÄ kompilacji, przynależÄcÄ do danej
               przestrzeni nazw.  Zakres deklaracji pakietu leży od
               deklaracji, do koÅca otaczajÄcego bloku (tak samo, jak zakres
               operatora local()). Wszelkie dalsze niekwalifikowane
               identyfikatory dynamiczne bÄdÄ wewnÄtrz tej przestrzeni nazw.
               Instrukcja package dotyczy tylko zmiennych
               dynamicznych--wÅÄczajÄc w to te, których użyÅeÅ lokalnie
               (local()),--lecz nie zmienne leksykalne, utworzone przez my().
               Zazwyczaj jest to pierwsza deklaracja we wÅÄczanym przez
               require lub use pliku.  Możesz przeÅÄczyÄ siÄ do pakietu w
               wiÄcej niż jednym miejscu; ma to wpÅyw jedynie na to, której
               tablicy symboli używa kompilator dla reszty bloku.  Do
               zmiennych i uchwytów plików  z innych pakietów, możesz
               odnosiÄ siÄ, poprzedzajÄc identyfikatory nazwami pakietów, za
               którymi nastÄpujÄ dwa dwukropki: $Pakiet::Zmienna.  JeÅli
               nazwa pakietu jest zerowa, używany jest pakiet main. Tak wiÄc
               $::sail jest równoważne $main::sail.

               Zobacz sekcjÄ Packages w podrÄczniku perlmod(1).  Zobacz też
               podrÄcznik perlsub(1), gdzie opisane sÄ problemy zakresów.

       pipe UCHWYTODCZYTU,UCHWYTZAPISU
               Otwiera parÄ poÅÄczonych potoków, zupeÅnie jak wywoÅanie
               systemowe pipe(2). Zauważ, że jeÅli zestawiasz pÄtle
               potokowych procesów, to o ile nie zachowasz ostrożnoÅci,
               może pojawiÄ siÄ deadlock. Dodatkowo, zauważ, że potoki
               perla używajÄ buforowania stdio, wiÄc możesz byÄ zmuszonym
               ustawiÄ $⎪, aby opróżniÄ swój UCHWYTZAPISU po każdej z
               komend, zależnie od aplikacji.

               Obejrzyj jeszcze stronÄ IPC::Open2, IPC::Open3 oraz sekcjÄ
               Bidirectional Communication z podrÄcznika perlipc(1). SÄ tam
               przykÅady takich rzeczy.

       pop TABLICA

       pop     Pobiera i zwraca ostatniÄ wartoÅÄ tablicy, skracajÄc jÄ o
               jeden. Ma podobne dziaÅanie do

                   $tmp = $ARRAY[$#ARRAY--];

               JeÅli tablica nie ma elementów, zwracana jest wartoÅÄ
               niezdefiniowana.  JeÅli parametr TABLICA zostanie pominiÄty, to
               pobiera z tablicy @ARGV w programie gÅównym, oraz z @_ w
               podprocedurach, podobnie jak shift().

       pos SKALAR

       pos     Zwraca offset, gdzie dla zmiennej SKALAR zakoÅczyÅo siÄ
               ostatnie przeszukiwanie m//g. (JeÅli nie podano zmiennej,
               używany jest $_).  Można go modyfikowaÄ w celu zmieniania
               offsetu. Modyfikacja ta wpÅynie również na zapewnienia
               zerowej szerokoÅci \G w wyrażeniach regularnych. Zobacz
               podrÄczniki perlref(1) i perlop(1).

       print UCHWYTPLIKU LISTA

       print LISTA

       print   Drukuje oddzielonÄ przecinkami listÄ ÅaÅcuchów. Po sukcesie
               zwraca TRUE. UCHWYTPLIKU może byÄ nazwÄ zmiennej skalarnej, w
               którym wypadku zmienna ta przechowuje nazwÄ lub referencjÄ do
               uchwytu pliku, wprowadzajÄc tak poziom niebezpoÅrednioÅci.
               (UWAGA: JeÅli UCHYTPLIKU jest zmiennÄ, a nastÄpny token jest
               [term], to może to byÄ Åºle zinterpretowane jako operator,
               chyba że wstawisz +, lub ujmiesz argumenty w nawiasy.) JeÅli
               UCHWYTPLIKU jest pominiÄty, drukowanie nastÄpuje na standardowe
               wyjÅcie (lub do ostatnio wybranego kanaÅu wyjÅciowego--zobacz
               opis select, znajdujÄcy siÄ gdzieÅ w tym dokumencie ).  JeÅli
               pominiÄto również argument LISTY, na STDOUT drukowane jest
               $_.  Aby ustawiÄ kanaÅ wyjÅciowy na coÅ innego niż STDOUT,
               użyj operacji select. Zauważ, że z uwagi na to, że print
               pobiera LISTÄ, wszystko z LISTY jest analizowane w kontekÅcie
               listowym, a  wszelka podprocedura, którÄ wywoÅasz, bÄdzie
               miaÅa jedno, lub wiÄcej wyrażeÅ analizowanych w kontekÅcie
               listowym. Uważaj też, by nie wpisywaÄ z sÅowem kluczowym
               print lewego nawiasu, chyba że chcesz by odpowiadajÄcy prawy
               nawias koÅczyÅ argumenty do drukowania--wstaw +, lub otocz
               wszystkie argumenty nawiasami.

               Zauważ, że jeÅli przechowujesz UCHWYTYPLIKÃW w tablicy, lub
               innym wyrażeniu, bÄdziesz musiaÅ używaÄ bloku, zwracajÄcego
               jego wartoÅÄ:

                   print { $files[$i] } "stuff\n";
                   print { $OK ? STDOUT : STDERR } "stuff\n";


       printf UCHWYTPLIKU FORMAT, LISTA

       printf FORMAT, LISTA
               Równoważne print UCHWYTPLIKU sprintf(FORMAT, LISTA).
               Pierwszy argument list bÄdzie interpretowany jako format
               printf.  JeÅli wÅÄczone jest use locale, to znak używany dla
               kropki dziesiÄtnej jest zależny od locala LC_NUMERIC. Zobacz
               stronÄ podrÄcznika perllocale(1).

               Nie wpadnij w puÅapkÄ używania printf(), gdy wystarczyÅby
               zwykÅy print(). Funkcja print() jest efektywniejsza i mniej
               wrażliwa na bÅÄdy.

       prototype FUNKCJA
               Zwraca w postaci ÅaÅcucha prototyp funkcji (lub undef, jeÅli
               funkcja nie ma prototypu). FUNKCJA jest referencjÄ lub nazwÄ
               funkcji, której prototyp usiÅujemy uzyskaÄ.

       push TABLICA,LISTA
               Traktuje TABLICÄ jako stos i wrzuca na jej szczyt wartoÅci
               LISTY.  DÅugoÅÄ TABLICY zwiÄksza siÄ o dÅugoÅÄ LISTY. Ma takie
               samo dziaÅanie jak

                   for $value (LIST) {
                       $ARRAY[++$#ARRAY] = $value;
                   }

               lecz jest efektywniejsze. Zwraca nowÄ liczbÄ elementów
               tablicy.

       q/ÅAÅCUCH/

       qq/ÅAÅCUCH/

       qx/ÅAÅCUCH/

       qw/ÅAÅCUCH/
               Uogólnione cudzysÅowy. Zobacz stronÄ perlop(1).

       quotemeta WYRAÅ»

       quotemeta
               Zwraca wartoÅÄ WYRAÅ» z poprzedzonymi odwróconymi ukoÅnikami
               wszystkimi nie-alfanumerycznymi znakami. (To znaczy, że
               wszystkie znaki, nie podpadajÄce pod /[A-Za-z_0-9]/ zostanÄ
               poprzedzone odwrotnym ukoÅnikiem, niezależnie od ustawieÅ
               locale.)  Jest to wewnÄtrzna funkcja, implementujÄca escape Q w
               ÅaÅcuchach z podwójnych cudzysÅowów.

               JeÅli WYRAÅ» jest pominiÄte, używane jest $_.

       rand WYRAÅ»

       rand    Zwraca losowÄ liczbÄ, wiÄkszÄ lub równÄ 0 i mniejszÄ od
               wartoÅci WYRAÅ». (WYRAÅ» powinno byÄ dodatnie.) JeÅli WYRAÅ»
               jest pominiÄte, używana jest wartoÅÄ 1. Automatycznie wywoÅuje
               srand(), chyba że byÅ on już wywoÅany. Zobacz też opis
               srand().

               (Uwaga: JeÅli twoja funkcja rand zwraca stale liczby, które sÄ
               zbyt wielkie, lub zbyt maÅe, to znaczy, że twoja wersja perla
               prawdopodobnie zostaÅa skompilowana ze zÅÄ liczbÄ RANDBITS.)

       read UCHWYTPLIKU,SKALAR,DÅUGOÅÄ,OFFSET

       read UCHWYTPLIKU,SKALAR,DÅUGOÅÄ
               Próbuje odczytaÄ DÅUGOÅÄ bajtów danych do zmiennej SKALAR z
               pliku wskazywanego przez UCHWYTPLIKU. Zwraca liczbÄ odczytanych
               bajtów, lub undef w wypadku bÅÄdu. SKALAR zostanie
               rozciÄgniÄty, lub skurczony do rzeczywistej dÅugoÅci
               odczytanych danych. Można też podaÄ OFFSET. Wtedy odczyt
               nastÄpi w innym miejscu niż poczÄtek ÅaÅcucha.  WywoÅanie to
               jest w rzeczywistoÅci zaimplementowane w oparciu o wywoÅanie
               fread(3) stdio. Aby uzyskaÄ prawdziwe wywoÅanie systemowe
               read(2), użyj sysread().

       readdir UCHWYTKATALOGU
               Zwraca nastÄpny wpis katalogu, otwartego przez opendir(). JeÅli
               jest używane w kontekÅcie listowym, zwraca resztÄ wpisów w
               katalogu. JeÅli nie ma już wiÄcej wpisów, w kontekÅcie
               skalarnym zwracana jest wartoÅÄ niezdefiniowana, a w kontekÅcie
               listowym listÄ null.

               JeÅli masz zamiar dokonywaÄ testów plikowych na wartoÅciach
               zwracanych przez readdir(), to lepiej poprzedź te nazwy
               katalogiem. Powinno siÄ tak robiÄ, gdyż nie readdir() nie
               przechodzi do swojego katalogu i zaszÅo by testowanie nie tego
               pliku co trzeba.

                   opendir(DIR, $some_dir) ⎪⎪ die "Nie powiódÅ siÄ opendir $some_dir: $!";
                   @dots = grep { /^\./ && -f "$some_dir/$_" } readdir(DIR);
                   closedir DIR;


       readlink WYRAÅ»

       readlink
               Zwraca wartoÅÄ dowiÄzania symbolicznego. DziaÅa to, jeÅli
               dowiÄzania symboliczne sÄ zaimplementowane [w systemie]. W
               przeciwnym wypadku powstaje bÅÄd krytycznych. W wypadku bÅÄdu
               systemowego, zwracana jest wartoÅÄ niezdefiniowana i ustawiane
               jest $! (errno). JeÅli WYRAÅ» zostanie pominiÄte, używane jest
               $_.

       recv GNIAZDO,SKALAR,DÅUGOÅÄ,FLAGI
               Odbiera komunikat na gnieździe. Próbuje odebraÄ DÅUGOÅÄ
               bajtów do zmiennej SKALAR. (GNIAZDO to uchwyt gniazda).  W
               rzeczywistoÅci funkcja wykonuje odpowiednik funkcji C
               recvfrom()(2), wiÄc zwraca adres nadawcy. W wypadku bÅÄdu,
               zwracana jest wartoÅÄ niezdefiniowana. SKALAR bÄdzie rozciÄgany
               do dÅugoÅci rzeczywiÅcie odczytanych danych. Flagi sÄ takie
               same jak w wywoÅaniu systemowym o tej samej nazwie.  Zobacz
               jeszcze sekcjÄ UDP: Message Passing w podrÄczniku perlipc(1).
               SÄ tam przykÅady.

       redo ETYKIETA

       redo    Komenda redo restartuje blok pÄtli, nie analizujÄc przy tym
               warunku.  Blok continue (jeÅli taki istnieje) również nie
               jest wykonywany.  JeÅli pominiÄta zostanie ETYKIETA, komenda
               odnosi siÄ do najbardziej wewnÄtrznej otaczajÄcej pÄtli.
               Komenda ta jest zazwyczaj wykorzystywana przez programy, które
               chcÄ siÄ oszukiwaÄ co do tego, co byÅo wÅaÅnie pobrane:

                   # Uproszczony ogoÅacacz komentarzy Pascala
                   # (uwaga: zakÅada brak { i } w ÅaÅcuchach)
                   LINE: while (<STDIN>) {
                       while (s⎪({.*}.*){.*}⎪$1 ⎪) {}
                       s⎪{.*}⎪ ⎪;
                       if (s⎪{.*⎪ ⎪) {
                           $front = $_;
                           while (<STDIN>) {
                               if (/}/) {      # Koniec komentarza?
                                   s⎪^⎪$front{⎪;
                                   redo LINE;
                               }
                           }
                       }
                       print;
                   }


       ref WYRAÅ»

       ref     JeÅli wartoÅÄ WYRAÅ» jest referencjÄ, zwracane jest TRUE, a w
               przeciwnym wypadku FALSE. JeÅli WYRAÅ» zostanie pominiÄte,
               użyte zostanie $_. Zwracana wartoÅÄ zależy od typu, do
               którego referencja jest referencjÄ.  Wbudowane typy to:

                   REF
                   SCALAR
                   ARRAY
                   HASH
                   CODE
                   GLOB

               JeÅli referencjowany obiekt zostaÅ bÅogosÅawiony (bless()) do
               pakietu, to zwracana jest nazwa pakietu. Możesz myÅleÄ o ref()
               jak o operatorze typeof().

                   if (ref($r) eq "HASH") {
                       print "r jest referencjÄ do tablicy asocjacyjnej.\n";
                   }
                   if (!ref ($r) {
                       print "r nie jest referencjÄ.\n";
                   }

               Zobacz też stronÄ podrÄcznika perlref(1).

       rename STARANAZWA,NOWANAZWA
               Zmienia nazwÄ pliku. Po sukcesie zwraca 1, w przeciwnym wypadku
               0. Nie dziaÅa miÄdzy granicami systemów plików.

       require WYRAÅ»

       require ZażÄdaj pewnej wÅaÅciwoÅci, podanej przez WYRAÅ», lub $_,
               jeÅli go nie podano. JeÅli WYRAÅ» jest numeryczne, to wymaga
               ono by bieżÄca wersja perla ($] lub $PERL_VERSION) byÅa
               wiÄksza lub równa WYRAÅ».

               W przeciwnym wypadku żÄda wÅÄczenia pliku biblioteki (o ile
               nie jest on już wÅÄczony). Plik jest wÅÄczany z użyciem
               mechanizmu do-PLIK, który w zasadzie jest wariacjÄ eval().
               Semantyka jest podobna do nastÄpujÄcej podprocedury:

                   sub require {
                       local($filename) = @_;
                       return 1 if $INC{$filename};
                       local($realfilename,$result);
                       ITER: {
                           foreach $prefix (@INC) {
                               $realfilename = "$prefix/$filename";
                               if (-f $realfilename) {
                                   $result = do $realfilename;
                                   last ITER;
                               }
                           }
                           die "Nie mogÄ znaleÅºÄ $filename w \@INC";
                       }
                       die $@ if $@;
                       die "$filename nie zwróciÅo prawdziwej wartoÅci" unless $result;
                       $INC{$filename} = $realfilename;
                       $result;
                   }

               Zauważ, że plik nie bÄdzie wÅÄczany pod tÄ samÄ nazwÄ
               dwukrotnie. Jako ostatniÄ instrukcjÄ, plik musi zwracaÄ TRUE,
               wskazujÄc tak pomyÅlne wykonanie kodu inicjalizacji, wiÄc
               zazwyczaj koÅczy siÄ takie pliki "1;", chyba że jesteÅ pewien,
               że zwróci TRUE tak czy inaczej. Lepiej jednak wstawiÄ po
               prostu"1;", na wypadek np. dodania nowych instrukcji.

               JeÅli WYRAÅ» jest prostym sÅowem, require zakÅada rozszerzenie
               ".pm" i samodzielnie zamienia "::" na "/", uÅatwiajÄc Åadowanie
               moduÅów standardowych. Ta postaÄ Åadowania moduÅów nie
               ryzykuje zmieniania twojej przestrzeni nazw.  to make it easy
               to load standard modules.  This form of loading of modules does
               not risk altering your namespace.

               Dla potÄżniejszego narzÄdzia importu, obejrzyj opis use,
               znajdujÄcy siÄ w tym dokumencie, oraz stronÄ perlmod(1).

       reset WYRAÅ»

       reset   Ogólnie, używane w bloku continue na koÅcu pÄtli, w celu
               wyczyszczenia zmiennych i resetowania przeszukiwaÅ ??, tak by
               znów dziaÅaÅy.  Wyrażenie jest interpretowane jako lista
               pojedynczych znaków (dla podawania zakresów, można używaÄ
               myÅlników). Wszystkie zmienne i tablice, rozpoczynajÄce siÄ na
               jednÄ z tych liter, sÄ resetowane do stanu pierwotnego. JeÅli
               wyrażenie zostanie pominiÄte, przeszukiwania jednego-trafienia
               (?wzorzec?) sÄ resetowane do ponownego trafienia.  Resetowanie
               tyczy siÄ tylko obiektów bieżÄcego pakietu. Zwracane jest
               zawsze 1.  PrzykÅady:

                   reset 'X';          # resetuj wszystkie zmienne X
                   reset 'a-z';        # resetuj zmienne maÅoliterowe
                   reset;              # resetuj tylko przeszukiwania ??

               Resetowanie "A-Z" nie jest zalecane, gdyż odniesie siÄ ono
               również do tablic ARGV i ENV.  Resetowane sÄ tylko zmienne
               pakietu--zmienne leksykalne sÄ nietykane, lecz one i tak
               oczyszczajÄ siÄ na wyjÅciu z zakresu. Zobacz opis my,
               znajdujÄcy siÄ gdzieÅ w tym dokumencie.

       return WYRAÅ»

       return  Powraca z podprocedury, eval(), lub z do PLIK, z wartoÅciÄ
               podanÄ przez WYRAÅ». Analiza WYRAÅ» może zachodziÄ w
               kontekÅcie listowym, skalarnym, lub pustym (void). Zależy to
               od sposobu użycia wartoÅci zwracanej, a kontekst może siÄ
               zmieniaÄ od jednego wywoÅania do drugiego (zobacz wantarray()).
               JeÅli WYRAÅ» nie jest podane, w kontekÅcie skalarnym zwracana
               jest wartoÅÄ niezdefiniowana, w listowym pusta lista, a w
               pustym (void) nic.

               (Zauważ, że przy braku return, podprocedura, eval, lub do
               PLIK zakoÅczÄ automatycznie z wartoÅciÄ ostatniego wykonanego
               wyrażenia.)

       reverse LISTA
               W kontekÅcie listowym, zwraca wartoÅÄ listowÄ, skÅadajÄcÄ siÄ z
               elementów LISTY, uÅożonych w przeciwnym porzÄdku. W
               kontekÅcie skalarnym, elementy listy sÄ ÅÄczone w ÅaÅcuch i
               zwracane w odwróconym porzÄdku.

                   print reverse <>;           # line tac, last line first

                   undef $/;                   # for efficiency of <>
                   print scalar reverse <>;    # byte tac, last line tsrif

               Operator ten jest też przydatny do inwersji tablicy
               asocjacyjnej, choÄ sÄ tu pewne zastrzeżenia. JeÅli wartoÅÄ
               jest w oryginalnej tablicy zduplikowana, to tylko jedna z nich
               może byÄ reprezentowana jako klucz w tablicy odwróconej. Musi
               to też przewinÄÄ caÅÄ tablicÄ i zbudowaÄ nowÄ, co dla dużej
               tablicy może trochÄ potrwaÄ.

                   %by_name = reverse %by_address;     # Inwersja tablicy asocjacyjnej


       rewinddir UCHWYTKATALOGU
               Ustawia bieżÄcÄ pozycjÄ (dla funkcji readdir()) na poczÄtek
               katalogu, wskazywanego przez UCHWYTKATALOGU.

       rindex STR,SUBSTR,POZYCJA

       rindex STR,SUBSTR
               DziaÅa tak samo jak index, lecz zwraca pozycjÄ ostatniego
               pojawienia siÄ SUBSTR w STR. JeÅli podano POZYCJÄ, to zwracane
               jest ostatnie pojawienie na, lub przed tÄ pozycjÄ.

       rmdir NAZWAPLIKU

       rmdir   Kasuje pusty katalog podany przez NAZWÄPLIKU. JeÅli operacja
               siÄ powiedzie, zwraca 1. W przeciwnym wypadku zwracane jest
               zero i ustawiane jest $! (errno). JeÅli NAZWAPLIKU jest
               pominiÄta, używane jest $_.

       s///    Operator podmienienia. Zobacz stronÄ perlop(1).

       scalar WYRAÅ»
               Wymusza interpretacjÄ skalarnÄ wyrażenia WYRAÅ» i zwraca jego
               wartoÅÄ.

                   @counts = ( scalar @a, scalar @b, scalar @c );

               Nie istnieje odpowiednik, konwertujÄcy skalar w listÄ. Jest tak
               dlatego, że w praktyce nie jest on nigdy potrzebny. JeÅli
               jednak naprawdÄ chcesz tak zrobiÄ, możesz użyÄ konstrukcji
               @{[ (jakieÅ wyrażenie) ]}, a zwykle powinno wystarczyÄ zwykÅe
               (some expression).

       seek UCHWYTPLIKU,POZYCJA,GDZIE
               Ustawia pozycjÄ UCHWYTUPLIKU, podobnie jak fseek(3) w stdio.
               UCHYTPLIKU może byÄ wyrażeniem, którego wartoÅÄ daje nazwÄ
               uchwytu pliku. WartoÅci GDZIE to 0, oznaczajÄce ustawianie
               nowej pozycji na POZYCJÄ, 1 oznaczajÄce ustawianie pozycji na
               pozycjÄ bieżÄcÄ plus POZYCJÄ, oraz 2 ustawiajÄce pozycjÄ na
               EOF plus POZYCJÄ (zazwyczaj ujemnÄ).  Zamiast numerycznych
               wartoÅci GDZIE, można używaÄ staÅych SEEK_SET, SEEK_CUR i
               SEEK_END z moduÅu IO::Seekable lub POSIX.  Po sukcesie zwracane
               jest 1, po bÅÄdzie 0.

               JeÅli chcesz ustawiÄ pozycjÄ pliku dla sysread() i syswrite(),
               nie używaj seek() -- użyj sysseek().

               Na niektórych systemach musisz wykonaÄ seek za każdym razem,
               gdy przeÅÄczasz siÄ miÄdzy zapisem i odczytem. WÅród innych
               rzeczy, może to mieÄ efekt woÅania funkcji stdio clearerr(3).
               WartoÅÄ GDZIE 1 jest przydatna do nie ruszania siÄ z pozycji
               pliku:

                   seek(TEST,0,1);

               Jest to również przydatne dla aplikacji, emulujÄcych tail -f.
               Gdy raz wejdziesz na EOF, a potem zaÅniesz na chwilÄ, to dobrze
               przed nastÄpnym odczytem użyÄ seek(), aby wszystko zresetowaÄ.
               seek() nie zmienia bieżÄcej pozycji, lecz czyÅci warunek EOF
               uchwytu, wiÄc nastÄpne <PLIK> powoduje, że perl znów coÅ
               bÄdzie próbowaÅ odczytaÄ.  Mamy przynajmniej takÄ nadziejÄ.

               JeÅli to nie dziaÅa (niektóre stdio sÄ szczególnie dziwne),
               to możesz potrzebowaÄ czegoÅ wiÄcej, jak:

                   for (;;) {
                       for ($curpos = tell(FILE); $_ = <FILE>; $curpos = tell(FILE)) {
                           # szukaj jakichŠrzeczy i wstaw je do plików
                       }
                       sleep($for_a_while);
                       seek(FILE, $curpos, 0);
                   }


       seekdir UCHWYTKATALOGU,POZYCJA
               Ustawia bieżÄcÄ pozycjÄ polecenia readdir() dla katalogu
               wskazywanego przez UCHWYTKATALOGU. POZYCJA musi mieÄ wartoÅÄ
               zwracanÄ przez telldir().

       select UCHWYTPLIKU

       select  Zwraca obecnie wybrany uchwyt pliku. JeÅli podano UCHWYTPLIKU,
               ustawia domyÅlny uchwyt pliku dla wyjÅcia. Daje to dwa efekty:
               po pierwsze write, lub print bez uchwytu pliku bÄdÄ zapisywaÅy
               domyÅlnie do tego UCHWYTUPLIKU. Po drugie, odniesienia
               zmiennych, zwiÄzanych z wyjÅciem, bÄdÄ siÄ odnosiÅy do tego
               kanaÅu wyjÅcia. Np. jeÅli masz ustawiÄ poczÄtek formatu formy
               dla wiÄcej niż jednego kanaÅu, mógÅbyÅ użyÄ nastÄpujÄcego:

                   select(REPORT1);
                   $^ = 'report1_top';
                   select(REPORT2);
                   $^ = 'report2_top';

               UCHWYTPLIKU może byÄ wyrażeniem, które daje nazwÄ
               rzeczywistego uchwytu pliku. Tak wiÄc:

                   $oldfh = select(STDERR); $⎪ = 1; select($oldfh);

               Niektórzy programiÅci wolÄ myÅleÄ o uchwytach pliku jak o
               obiektach, posiadajÄcych metody, zapisujÄc ostatni przykÅad
               jako:

                   use IO::Handle;
                   STDERR->autoflush(1);


       select RBITS,WBITS,EBITS,TIMEOUT
               Funkcja ta woÅa z podanymi maskami bitowymi wywoÅanie systemowe
               select(2). Maski można skonstruowaÄ, używajÄc fileno() i
               vec():

                   $rin = $win = $ein = '';
                   vec($rin,fileno(STDIN),1) = 1;
                   vec($win,fileno(STDOUT),1) = 1;
                   $ein = $rin ⎪ $win;

               JeÅli chcesz wykonywaÄ tÄ funkcjÄ na wielu uchwytach plików,
               możesz napisaÄ podprocedurÄ:

                   sub fhbits {
                       local(@fhlist) = split(' ',$_[0]);
                       local($bits);
                       for (@fhlist) {
                           vec($bits,fileno($_),1) = 1;
                       }
                       $bits;
                   }
                   $rin = fhbits('STDIN TTY SOCK');

               Spotykanym idiomem jest:

                   ($nfound,$timeleft) =
                     select($rout=$rin, $wout=$win, $eout=$ein, $timeout);

               aby blokowaÄ, aż coÅ stanie siÄ gotowe, wykonaj po prostu

                   $nfound = select($rout=$rin, $wout=$win, $eout=$ein, undef);

               WiÄkszoÅÄ systemów nie zwraca niczego mÄdrego w $timeleft,
               wiÄc wywoÅanie select() w kontekÅcie skalarnym zwróci po
               prostu $nfound.

               Każda z masek bitowych może byÄ niezdefiniowana. Podany
               timeout jest podawany w sekundach. Może byÄ uÅamkowy. Uwaga:
               nie wszystkie implementacje zwracajÄ $timeleft.  JeÅli go nie
               zwracajÄ, to zwracajÄ wartoÅÄ równÄ tej, przekazanej w
               $timeout.

               A oto 250 milisekundowe zaÅniÄcie:

                   select(undef, undef, undef, 0.25);

               UWAGA: Nie próbuj ÅÄczyÄ buforowanego I/O (np. read czy <FH>)
               z funkcjÄ select. Użyj zamiast tego sysread().

       semctl ID,SEMNUM,CMD,ARG
               WoÅa funkcjÄ IPC semctl(2) z Systemu V. JeÅli CMD to &IPC_STAT
               lub &GETALL, to ARG musi byÄ zmiennÄ, która bÄdzie
               przechowywaÄ zwróconÄ strukturÄ semid_ds, lub tablicÄ wartoÅci
               semafora.  Podczas bÅÄdu, podobnie jak ioctl zwraca wartoÅÄ
               niezdefiniowanÄ, dla zera ÅaÅcuch "0 but true", a dla
               pozostaÅych wartoÅci rzeczywistÄ wartoÅÄ zwróconÄ.

       semget KLUCZ,NSEMS,FLAGI
               WoÅa funkcjÄ IPC semget(2) z Systemu V. Zwraca identyfikator
               semafora, lub wartoÅÄ niezdefiniowanÄ w przypadku bÅÄdu.

       semop KLUCZ,ÅAÅCUCHOP
               WoÅa funkcjÄ IPC semop(2) z Systemu V. Funkcja ta dokonuje
               operacji semaforowych, np. sygnalizowania i czekania. ÅAÅCUCHOP
               musi byÄ spakowanÄ tablicÄ struktur semop. KażdÄ ze struktur
               semop można wygenerowaÄ z pomocÄ pack("sss", $semnum, $semop,
               $semflag).  Liczba operacji semaforowych jest implikowana
               dÅugoÅciÄ ÅAÅCUCHOP. Po sukcesie, funkcja zwraca TRUE, a w
               wypadku bÅÄdu FALSE. Na przykÅad nastÄpujÄcy fragment kodu
               oczekuje na semaforze $semnum z identyfikatora $semid:

                   $semop = pack("sss", $semnum, -1, 0);
                   die "Problem z semaforem: $!\n" unless semop($semid, $semop);

               Aby ustawiÄ semafor, zamieÅ "-1" na "1".

       send GNIAZDO,MSG,FLAGI,DO

       send GNIAZDO,MSG,FLAGI
               WysyÅa na gniazdo komunikat. Pobiera takie same flagi, jak
               wywoÅanie systemowe send(2). Na gniazdach niepodÅÄczonych,
               należy podaÄ cel wysyÅania, czyli argument DO. W tej sytuacji
               użyta zostanie funkcja C sendto(2). Funkcja zwraca liczbÄ
               wysÅanych znaków, lub w wypadku bÅÄdu wartoÅÄ niezdefiniowanÄ.
               Zobacz jeszcze sekcjÄ UDP: Message Passing w podrÄczniku
               perlipc(1). SÄ tam przykÅady.

       setpgrp PID,PGRP
               Ustawia bieżÄcÄ grupÄ procesów dla podanego PIDa (wynoszÄcego
               0 dla procesu bieżÄcego). Funkcja powoduje bÅÄd krytyczny na
               maszynach nie implementujÄcych setpgrp(2). JeÅli argumenty sÄ
               pominiÄte, odnosi siÄ to domyÅlnie do 0,0. Zauważ, że wersja
               POSIX setpgrp() nie przyjmuje żadnych argumentów, wiÄc
               przenoÅne jest tylko setpgrp 0,0.

       setpriority CZYJE,KTO,PRIORYTET
               Ustawia bieżÄcy priorytet procesu, grupy procesów, lub
               użytkownika. (Zobacz setpriority(2).) Na maszynach nie
               implementujÄcych tego wywoÅania systemowego, powoduje bÅÄd
               krytyczny.

       setsockopt GNIAZDO,POZIOM,NAZWAOPC,WARTOPC
               Ustawia żÄdanÄ opcjÄ gniazda. W wypadku bÅÄdu, zwraca wartoÅÄ
               niezdefiniowanÄ. JeÅli nie chcesz przekazywaÄ argumentu,
               WARTOPC może byÄ podane jako undef.

       shift TABLICA

       shift   Wysuwa pierwszÄ wartoÅÄ tablicy i zwraca jÄ, skracajÄc tablicÄ
               o 1 i przenoszÄc wszystko w dóÅ. JeÅli w tablicy nie ma
               elementów, zwracana jest wartoÅÄ niezdefiniowana. JeÅli
               TABLICA zostanie pominiÄta, to przesuwana jest w programie
               gÅównym tablica @ARGV, oraz @_ w podprocedurach. (Jest to
               okreÅlone leksykalnie.) Zobacz też unshift(), push() oraz
               pop().  Shift() i unshift() robiÄ to samo na lewym koÅcu
               tablicy, co pop() i push() na prawym.

       shmctl ID,CMD,ARG
               WoÅa funkcjÄ IPC shmctl(2) z Systemu V. JeÅli CMD jest
               &IPC_STAT, to ARG musi byÄ zmiennÄ, która bÄdzie przechowywaÄ
               zwróconÄ strukturÄ shmid_ds. WartoÅÄ zwracana jest jak w
               ioctl: wartoÅÄ niezdefiniowana dla bÅÄdu, "0 but true" dla zera
               i rzeczywista wartoÅÄ zwrócona w innych wypadkach.

       shmget KLUCZ,ROZMIAR,FLAGI
               WoÅa funkcjÄ IPC shmget(2) z Systemu V. Zwraca identyfikator
               pamiÄci dzielonej, a w przypadku bÅÄdu wartoÅÄ niezdefiniowanÄ.

       shmread ID,ZMIENNA,POZYCJA,ROZMIAR

       shmwrite ID,ÅAÅCUCH,POZYCJA,ROZMIAR
               Odczytuje, lub zapisuje segment pamiÄci dzielonej,
               rozpoczynajÄc w pozycji POZYCJA i obsÅugujÄc rozmiar ROZMIAR
               bajtów.  Podczas odczytu, ZMIENNA musi byÄ elementem, który
               bÄdzie przechowywaÅ odczytane dane. Podczas zapisywania, jeÅli
               ÅAÅCUCH jest zbyt dÅugi, użytych zostanie tylko ROZMIAR
               bajtów; jeÅli ÅAÅCUCH jest zbyt krótki, to reszta zostanie
               wypeÅniona nullami.  Funkcja zwraca po sukcesie TRUE oraz FALSE
               w wypadku bÅÄdu.

       shutdown GNIAZDO,JAK
               WyÅÄcza poÅÄczenie na gnieździe, w sposób wskazany przez JAK,
               który ma takÄ samÄ interpretacjÄ, jak w wywoÅaniu systemowym
               shutdown(2).

       sin WYRAÅ»

       sin     Zwraca sinus z WYRAÅ» (podanego w radianach). JeÅli WYRAÅ» jest
               pominiÄte, zwracana jest wartoÅÄ dla $_.

               Dla operacji odwrotnej do sinusa, możesz użyÄ funkcji
               POSIX::asin(), lub nastÄpujÄcej relacji:

                   sub asin { atan2($_[0], sqrt(1 - $_[0] * $_[0])) }


       sleep WYRAÅ»

       sleep   Powoduje, że skrypt zasypia na WYRAŻ sekund, lub na zawsze,
               jeÅli nie podano WYRAÅ».  Spanie można przerwaÄ, przesyÅajÄc
               procesowi SIGALRM. Zwraca iloÅÄ przespanych sekund.
               Przypuszczalnie nie powinno siÄ ÅÄczyÄ wywoÅaÅ alarm() i
               sleep(), gdyż sleep() jest czÄsto implementowane przy użyciu
               alarm().

               Na niektórych systemach, spanie może trwaÄ do sekundy mniej
               niż żÄdaÅeÅ, zależnie od sposobu obliczania sekund.
               WiÄkszoÅÄ nowoczesnych systemów przesypia caÅy okres.

               Dla pauz, lub wiÄkszej dokÅadnoÅci niż sekunda, możesz użyÄ
               interfejsu syscall() perla i dostaÄ siÄ do funkcji
               setitimer(2), o ile jest ona obsÅugiwana przez twój system.
               Możesz też zapoznaÄ siÄ z opisem select(), znajdujÄcym siÄ
               gdzieÅ w tym dokumencie.

               Zobacz także funkcjÄ sigpause() z moduÅu POSIX.

       socket GNIAZDO,DOMENA,TYP,PROTOKÃÅ
               Otwiera gniazdo podanego typu i przywiÄzuje je do uchwytu pliku
               GNIAZDO.  DOMENA, TYP i PROTOKÃÅ sÄ takie same jak dla
               wywoÅania systemowego socket(2). Przed używaniem tej funkcji,
               powinieneÅ użyÄ "use Socket;", aby zaimportowaÄ odpowiednie
               definicje.  Obejrzyj przykÅad w sekcji Sockets: Client/Server
               Communication w podrÄczniku perlipc(1).

       socketpair GNIAZDO1,GNIAZDO2,DOMENA,TYP,PROTOKÃÅ
               Tworzy nienazwanÄ parÄ gniazd danego typu, w podanej domenie.
               DOMENA, TYP i PROTOKÃÅ sÄ podawane tak samo, jak dla wywoÅania
               systemowego socketpair(2). JeÅli funkcja nie jest
               zaimplementowana, to powoduje bÅÄd krytyczny. Po sukcesie
               zwracane jest TRUE.

       sort NAZWA LISTA

       sort BLOK LISTa

       sort LISTA
               Sortuje LISTÄ i zwraca posortowanÄ wartoÅÄ listowÄ. JeÅli
               pominiÄte zostanÄ parametry NAZWA lub BLOK, sortowanie
               nastÄpuje w porzÄdku porównywania ÅaÅcuchów. JeÅli podano
               NAZWÄ, to wskazuje ona na podprocedurÄ, zwracajÄcÄ liczbÄ
               caÅkowitÄ, która jest mniejsza, równa, lub wiÄksza od zera,
               zależnie od tego, jak elementy tablicy majÄ byÄ poukÅadane. W
               takich procedurach bardzo przydatne sÄ operatory <=> oraz cmp.
               NAZWA może byÄ nazwÄ zmiennej skalarnej--w tym wypadku wartoÅÄ
               daje nazwÄ używanej podprocedury. Zamiast NAZWY można podaÄ
               BLOK, czyli anonimowÄ podprocedurÄ sortujÄcÄ.

               W celu polepszenia efektywnoÅci, pomijany jest normalny kod
               woÅania podprocedur: podprocedura nie może byÄ rekurencyjna, a
               dwa porównywane elementy nie sÄ przekazywane przez @_, lecz
               jako globalne zmienna pakietu $a oraz $b (zobacz przykÅad
               poniżej). SÄ one przekazywane przez referencjÄ, wiÄc nie
               modyfikuj ani $a, ani $b. Nie próbuj też deklarowaÄ ich jako
               leksykalne.

               Nie można też wyjÅÄ z bloku sortujÄcego przy użyciu żadnego
               operatora kontroli pÄtli czy goto().

               Gdy dziaÅa use locale, sort LIST sortuje LISTÄ wedÅug
               odpowiedniego locale. Zobacz stronÄ perllocale(1).

               PrzykÅady:

                   # sortuj leksykalnie
                   @articles = sort @files;

                   # to samo, z jawnÄ procedurÄ sortujÄcÄ
                   @articles = sort {$a cmp $b} @files;

                   # teraz niewrażliwie na wielkoÅÄ liter
                   @articles = sort {uc($a) cmp uc($b)} @files;

                   # to samo w odwrotnym porzÄdku
                   @articles = sort {$b cmp $a} @files;

                   # sortuj rosnÄco, numerycznie
                   @articles = sort {$a <=> $b} @files;

                   # j/w, malejÄco
                   @articles = sort {$b <=> $a} @files;

                   # sortuj, używajÄc jawnej nazwy podprocedury
                   sub byage {
                       $age{$a} <=> $age{$b};  # zaÅożenie numerycznoÅci
                   }
                   @sortedclass = sort byage @class;

                   # to sortuje tablicÄ asocjacyjnÄ %age wedÅug wartoÅci (zamiast klucza)
                   # przy użyciu funkcji inline
                   @eldest = sort { $age{$b} <=> $age{$a} } keys %age;

                   sub backwards { $b cmp $a; }
                   @harry = ('dog','cat','x','Cain','Abel');
                   @george = ('gone','chased','yz','Punished','Axed');
                   print sort @harry;
                           # drukuje AbelCaincatdogx
                   print sort backwards @harry;
                           # drukuje xdogcatCainAbel
                   print sort @george, 'to', @harry;
                           # drukuje AbelAxedCainPunishedcatchaseddoggonetoxyz

                   # sortuj nieefektywnie wedÅug malejÄcego porównania numerycznego,
                   # używajÄc pierwszej liczby caÅkowitej po znaku =, lub w przeciwnym
                   # wypadku caÅy rekord, bez zwracania uwagi na wielkoÅÄ liter.

                   @new = sort {
                       ($b =~ /=(\d+)/)[0] <=> ($a =~ /=(\d+)/)[0]
                                           ⎪⎪
                                   uc($a)  cmp  uc($b)
                   } @old;

                   # to samo, dużo efektywniej;
                   # zbudujemy zewnÄtrzne indeksy
                   @nums = @caps = ();
                   for (@old) {
                       push @nums, /=(\d+)/;
                       push @caps, uc($_);
                   }

                   @new = @old[ sort {
                                       $nums[$b] <=> $nums[$a]
                                                ⎪⎪
                                       $caps[$a] cmp $caps[$b]
                                      } 0..$#old
                              ];

                   # to samo, przy użyciu Schwartzian Transform (bez tymczasowych)
                   @new = map { $_->[0] }
                       sort { $b->[1] <=> $a->[1]
                                       ⎪⎪
                              $a->[2] cmp $b->[2]
                       } map { [$_, /=(\d+)/, uc($_)] } @old;

               JeÅli używasz strict, nie możesz deklarowaÄ $a i $b jako
               leksykalia. SÄ one pakietowymi globaliami. Znaczy to, że jeÅli
               jesteÅ w pakiecie gÅównym (main), to jest to

                   @articles = sort {$main::b <=> $main::a} @files;

               kub po prostu

                   @articles = sort {$::b <=> $::a} @files;

               lecz jeÅli jesteÅ w pakiecie FooPack, to jest to

                   @articles = sort {$FooPack::b <=> $FooPack::a} @files;

               Funkcja porównujÄca musi siÄ zachowywaÄ [jednoznacznie]. JeÅli
               zwraca niespójne, nielogiczne wyniki (np. czasem mówiÄc, że
               $x[1] jest mniejsze niż $x[2], a czasem odwrotnie), to
               interpreter perla prawdopodobnie siÄ wysypie i zrzuci core.
               Wynika to caÅkowicie z zależnoÅci od systemowej funkcji
               bibliotecznej qsort(3); funkcja ta czÄsto nie dokonuje pewnych
               sprawdzeÅ w celu polepszenia szybkoÅci.

       splice TABLICA,OFFSET,DÅUGOÅÄ,LISTA

       splice TABLICA,OFFSET,DÅUGOÅÄ

       splice TABLICA,OFFSET
               Usuwa z tablicy elementy wskazane przez OFFSET i DÅUGOÅÄ, oraz
               zamienia je ewentualnie podanymi elementami LISTY. Zwraca
               elementy, które zostaÅy z tablicy usuniÄte. Tablica zgodnie z
               potrzebami roÅnie, lub maleje. JeÅli parametr DÅUGOÅÄ zostanie
               pominiÄty, to usuwane jest wszystko, poczynajÄc od OFFSET. A
               oto pewne równoważnoÅci (zakÅadajÄc, że $[ == 0):

                   push(@a,$x,$y)      splice(@a,$#a+1,0,$x,$y)
                   pop(@a)             splice(@a,-1)
                   shift(@a)           splice(@a,0,1)
                   unshift(@a,$x,$y)   splice(@a,0,0,$x,$y)
                   $a[$x] = $y         splice(@a,$x,1,$y);

               PrzykÅad, przy zaÅożeniu, że dÅugoÅci tablic sÄ przekazywane
               przed tablicami:

                   sub aeq {   # porównaj dwie wartoÅci listowe
                       local(@a) = splice(@_,0,shift);
                       local(@b) = splice(@_,0,shift);
                       return 0 unless @a == @b;       # ta sama dÅugoÅÄ?
                       while (@a) {
                           return 0 if pop(@a) ne pop(@b);
                       }
                       return 1;
                   }
                   if (&aeq($len,@foo[1..$len],0+@bar,@bar)) { ... }


       split /WZORZEC/,WYRAÅ»,LIMIT

       split /WZORZEC/,WYRAÅ»

       split /WZORZEC/

       split   Dzieli ÅaÅcuch na tablicÄ ÅaÅcuchów i zwraca tÄ tablicÄ.

               JeÅli nie jest w kontekÅcie listowym, to zwraca listÄ
               znalezionych pól i dzieli do tablicy @_. (w kontekÅcie
               listowym możesz wymusiÄ dzielenie do @_, używajÄc jako
               rozdzielaczy wzorca ??, lecz bÄdzie wciÄż zwracaÄ wartoÅÄ
               tablicowÄ.) Używanie jawnego dzielenia do @_ nie jest jednak
               zalecane.

               JeÅli WYRAÅ» jest pominiÄty, dzielony jest ÅaÅcuch $_. JeÅli
               pominiÄty jest też WZORZEC, dzielenie nastÄpuje na biaÅych
               spacjach (po pominiÄciu wszelkich prowadzÄcych biaÅych spacji).
               Wszystko, odpowiadajÄce WZORCOWI jest uważane za rozdzielacz
               pól. (Zauważ, że rozdzielacz może byÄ dÅuższy niż jeden
               znak.) JeÅli podano wartoÅÄ LIMIT i nie jest to liczba ujemna,
               dzielenie nastÄpuje do nie wiÄcej niż tej iloÅci pól. JeÅli
               LIMIT nie jest podany, koÅczÄce wypeÅnienia nullowe sÄ obcinane
               (co dobrze pamiÄtaÄ użytkownikom pop()). JeÅli LIMIT jest
               ujemny, to jest traktowany tak, jakby podano arbitralnie duży
               LIMIT.

               Wzorzec, odpowiadajÄcy ÅaÅcuchowi null (żeby nie byÄ zmylonym
               ze wzorcem null //, który jest tylko jednym czÅonkiem z
               zestawu wzorców odpowiadajÄcych ÅaÅcuchowi null) bÄdzie
               dzieliÅ wartoÅÄ WYRAÅ» na oddzielne znaki w każdym punkcie,
               który odpowie zapytaniu.  Na przykÅad:

                   print join(':', split(/ */, 'hi there'));

               da w wyniku 'h:i:t:h:e:r:e'.

               Parametr LIMIT może byÄ użyty do podzielenia linii czÄÅciowo

                   ($login, $passwd, $remainder) = split(/:/, $_, 3);

               Podczas przypisywania do listy, jeÅli nie podano LIMITU, perl
               ustawia domyÅlny limit wielkoÅci o 1 wiÄkszej niż lista
               zmiennych na liÅcie, zapobiegajÄc tak niepotrzebnej pracy. Dla
               powyższej listy, LIMIT byÅby ustawiony domyÅlnie na 4.  W
               aplikacjach, gdzie czas jest krytycznym czynnikiem,
               powstrzymuje ciÄ to od dzielenia na wiÄcej pól, niż
               rzeczywiÅcie potrzebujesz.

               JeÅli WZORZEC zawiera nawiasy, z ÅaÅcuchów odpowiadajÄcym
               podÅaÅcuchom rozdzielacza tworzone sÄ dodatkowe elementy
               tablicy.

                   split(/([,-])/, "1-10,20", 3);

               daje wartoÅÄ listowÄ

                   (1, '-', 10, ',', 20)

               JeÅli masz caÅy nagÅówek normalnego unixowego komunikatu
               pocztowego w nagÅówku $header, to możesz rozdzieliÄ go na
               pola i wartoÅci w nastÄpujÄcy sposób:

                   $header =~ s/\n\s+/ /g;  # obsÅuż linie kontynuacji
                   %hdrs   =  (UNIX_FROM => split /^(.*?):\s*/m, $header);

               Wzorzec /WZORZEC/ może byÄ zamieniony wyrażeniem,
               umożliwiajÄc tak podawanie wzorców, które zmieniajÄ siÄ w
               czasie. (aby dokonaÄ kompilacji czasu dziaÅania tylko raz,
               użyj /$variable/o.)

               Specjalnym przypadkiem jest podanie jako WZORZEC spacji (' ').
               BÄdzie to powodowaÄ dzielenie na biaÅych spacjach, podobnie jak
               domyÅlna wersja split. Tak wiÄc split(' ') może byÄ używany
               do domyÅlnego zachowania awk, gdzie split(/ /) daje tyle
               ÅaÅcuchów null, ile jest prowadzÄcych biaÅych spacji. Split
               dla /\s+/ jest podobny do split(' '), lecz dowolna biaÅa spacja
               powoduje null na pierwszym polu. Split bez argumentów dokonuje
               w rzeczywistoÅci wewnÄtrznie split(' ', $_).

               PrzykÅad:

                   open(passwd, '/etc/passwd');
                   while (<passwd>) {
                       ($login, $passwd, $uid, $gid, $gcos,
                           $home, $shell) = split(/:/);
                       ...
                   }

               (Zauważ, że $shell w powyższym bÄdzie miaÅ za sobÄ nowÄ
               liniÄ.  Aby jÄ usunÄÄ, zapoznaj siÄ z funkcjami chop, chomp i
               join, opisanymi gdzieÅ w tym dokumencie.)

       sprintf FORMAT, LISTA
               Zwraca ÅaÅcuch, sformatowany wedÅug konwencji printf, funkcji
               bibliotecznej jÄzyka C, sprintf(3).

               Perl emuluje funkcjÄ C sprintf(), lecz nie używa jej (poza
               liczbami zmiennoprzecinkowymi, a nawet wtedy dozwolone sÄ tylko
               standardowe modyfikatory). W wyniku, w perlu nie sÄ dostÄpne
               żadne niestandardowe rozszerzenia lokalnej wersji sprintf().

               Perlowy sprintf() zezwala na nastÄpujÄce, ogólnie znane
               konwersje:

                  %%   znak procentu
                  %c   znak o podanym kodzie
                  %s   ÅaÅcuch
                  %d   integer ze znakiem, dziesiÄtnie
                  %u   integer bez znaku, dziesiÄtnie
                  %o   integer bez znaku, ósemkowo
                  %x   integer bez znaku, szesnastkowo
                  %e   liczba zmiennoprzecinkowa w notacji naukowej
                  %f   liczba zmiennoprzecinkowa w ustalonej notacji dziesiÄtnej
                  %g   liczba zmiennoprzecinkowa w notacji %e lub %f

               Dodatkowo, perl zezwala na nastÄpujÄce szeroko-obsÅugiwane
               konwersje:

                  %X   podobne do %x, lecz na dużych literach
                  %E   podobne do %e, lecz z użyciem dużego E
                  %G   podobne do %g, lecz z użyciem dużego E
                  %p   wskaźnik (daje adres wartoÅci, podany szesnastkowo)
                  %n   specjalne: przechowuje liczbÄ dotychczas wpisanych do nastÄpnej
                       zmiennej z listy parametrów

               I w koÅcu, dla kompatybilnoÅci wstecznej, perl zezwala na
               poniższe zbyteczne, lecz szeroko obsÅugiwane konwersje:

                  %i   synonim %d
                  %D   synonim %ld
                  %U   synonim %lu
                  %O   synonim %lo
                  %F   synonim %f

               Perl zezwala na użycie nastÄpujÄcych uniwersalnych flag miÄdzy
               znakiem %, a literÄ konwersji:

                  spacja  poprzedź liczbÄ dodatniÄ spacjÄ
                  +       poprzedź liczbÄ dodatniÄ plusem
                  -       wyrównuj do lewej w obszarze pola
                  0       użyj zer zamiast spacji do wyrównywania w prawo
                  #       poprzedź liczbÄ Ã³semkowÄ "0", szesnastkowÄ "0x"
                  liczba  minimalna wielkoÅÄ pola
                  .liczba "precyzja": liczba cyfr po kropce dziesiÄtnej dla
                          zmiennoprzecinkowych, maksymalna dÅugoÅÄ dla ÅaÅcucha, lub
                          minimalna dÅugoÅÄ dla liczby caÅkowitej (integer)
                  l       interpretuj integer jak typ C "long", lub "unsigned long"
                  h       interpretuj integer jak typ C "short", lub "unsigned short"

               Istnieje też jedna flaga specyficzna dla perla:

                  V       interpretuj integer jako standardowy typ integera w perlu

               Tam, gdzie we flagach pojawia siÄ liczba, można użyÄ gwiazdki
               ("*"). W tym wypadku perl używa zamiast liczby wartoÅci
               nastÄpnego argumentu z listy parametrów. JeÅli szerokoÅÄ pola,
               uzyskana przez "*" jest ujemna, to ma to samo dziaÅanie, co
               flaga '-': wyrównywanie do lewej.

               JeÅli dziaÅa use locale, znaki używane do kropki dziesiÄtnej
               bÄdÄ drukowane wedÅug locale LC_NUMERIC. Zobacz stronÄ
               perllocale(1).

       sqrt WYRAÅ»

       sqrt    Zwraca pierwiastek kwadratowy z WYRAÅ». JeÅli WYRAÅ» jest
               pominiÄte, zwraca wartoÅÄ dla $_.

       srand WYRAÅ»

       srand   Ustawia nasionko liczby losowej dla operatora rand. JeÅli
               pominiÄte zostanie WYRAÅ», używana jest pseudolosowa wartoÅÄ,
               oparta o bieżÄcy czas i identyfikator procesu. W wersjach
               perla wczeÅniejszych niż 5.004, domyÅlnym nasionkiem byÅ po
               prostu bieżÄcy czas time(). Nie jest to szczególnie dobre
               nasionko, wiÄc wiele starych programów zaÅÄczaÅo swojÄ wÅasnÄ
               wartoÅÄ inicjujÄcÄ (czÄsto time ^ $$, lub C<time ^ ($$ + ($$ <<
               15))>), lecz teraz nie jest to konieczne.

               W rzeczywistoÅci, zazwyczaj w ogóle nie jest konieczne
               wywoÅywanie srand, ponieważ jest ono wywoÅywane niejawnie przy
               pierwszym użyciu operatora rand. Jednak nie byÅo tak w
               wersjach wczeÅniejszych niż perl 5.005, wiÄc jeÅli twój
               skrypt ma dziaÅaÄ ze starszymi wersjami, powinien jednak woÅaÄ
               srand().

               Zauważ, że dla potrzeb kryptografii potrzebujesz czegoÅ
               wiÄcej niż tylko wylosowaÄ domyÅlne nasionko. PopularnÄ metodÄ
               jest sprawdzanie sum kontrolnych skompresowanego wyjÅcia z
               jednego, lub wiÄcej programów szybko zmieniajÄcego siÄ statusu
               systemu operacyjnego. Na przykÅad:

                   srand (time ^ $$ ^ unpack "%L*", `ps axww ⎪ gzip`);

               JeÅli naprawdÄ ci na tym zależy, zobacz moduÅ
               Math::TrulyRandom w CPAN.

               Nie woÅaj srand() wielokrotnie, chyba że dokÅadnie wiesz co i
               w jakim celu robisz. Celem tej funkcji jest zasilenie funkcji
               rand() tak, by rand() zwracaÅ innÄ sekwencjÄ dla każdego
               uruchomienia programu. Zrób to raz, na samym poczÄtku
               programu, bo w przeciwnym wypadku nie uzyskasz z rand() liczb
               losowych!

               CzÄsto wywoÅywane programy (takie jak skrypty CGI), które jako
               nasionka używajÄ po prostu

                   time ^ $$

               mogÄ paÅÄ ofiarÄ wÅasnoÅci matematycznej, że

                   a^b == (a+1)^(b+1)

               przez jednÄ trzeciÄ czasu. WiÄc nie rób tego.

       stat UCHWYTPLIKU

       stat WYRAÅ»

       stat    Zwraca 13 elementowÄ tablicÄ, opisujÄcÄ status pliku--otwartego
               przez UCHWYTPLIKU lub nazwanego przez WYRAÅ». JeÅli WYRAÅ» jest
               pominiÄte, używany jest $_. Gdy funkcja zawiedzie, zwraca
               listÄ null. Zazwyczaj jest to używane nastÄpujÄco:

                   ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
                      $atime,$mtime,$ctime,$blksize,$blocks)
                          = stat($filename);

               Nie wszystkie z tych pól sÄ obsÅugiwane na wszystkich
               rodzajach systemów plików. Oto znaczenia pól:

                 0 dev      numer urzÄdzenia systemu plików
                 1 ino      numer inode
                 2 mode     prawa pliku (typ i prawa)
                 3 nlink    liczba twardych dowiÄzaÅ do pliku
                 4 uid      numeryczny UID wÅaÅciciela
                 5 gid      numeryczny GID wÅaÅciciela
                 6 rdev     identyfikator urzÄdzenia (tylko dla plików specjalnych)
                 7 size     caÅkowity rozmiar w bajtach
                 8 atime    ostatni dostÄp od epoki
                 9 mtime    ostatnia modyfikacja od epoki
                10 ctime    ostatnia zmiana inode od epoki
                11 blksize  preferowany rozmiar bloku dla I/O systemu plików
                12 blocks   rzeczywista liczba zaalokowanych bloków

               (Epoka nastÄpiÅa o 00:00 1 stycznia, 1970 GMT.)

               JeÅli funkcja dostanie specjalny uchwyt pliku, skÅadajÄcy siÄ z
               podkreÅlenia, to nie jest ona wykonywana, lecz przekazywana
               jest zawartoÅÄ ostatniego testu pliku. PrzykÅad:

                   if (-x $file && (($d) = stat(_)) && $d < 0) {
                       print "$file jest wykonywalnym plikiem NFS\n";
                   }

               (DziaÅa to tylko na maszynach, dla których numer urzÄdzenia
               jest ujemny dla NFS.)

       study SKALAR

       study   Zajmuje trochÄ czasu, by przestudiowaÄ SKALAR (lub $_, jeÅli go
               nie podano), przygotowujÄc siÄ na wiele przeszukiwaÅ wzorców
               na tym ÅaÅcuchu, przed jego kolejnÄ modyfikacjÄ. Może to
               pozwoliÄ zyskaÄ na czasie, zależnie od natury i liczby
               wzorców, a także od rozÅożenia czÄstotliwoÅci znaków w
               przeszukiwanym ÅaÅcuchu. Najlepiej sprawdziÄ empirycznie, czy
               funkcja ta wpÅywa na szybkoÅÄ dodatnio, czy ujemnie. NajwiÄcej
               zyskajÄ pÄtle, szukajÄce wielu krótkich, staÅych ÅaÅcuchów
               (wÅÄczajÄc staÅe czÄÅci bardziej zÅożonych wzorców). Naraz
               można mieÄ obsÅugiwany przez study tylko jeden ÅaÅcuch. JeÅli
               przejdziesz na inny skalar, to poprzedni stanie siÄ
               nieprzestudiowany. (study dziaÅa nastÄpujÄco: najpierw robiona
               jest lista powiÄzana dla każdego znaku przeszukiwanego
               ÅaÅcucha, tak że wiemy na przykÅad gdzie znajdujÄ siÄ
               wszystkie znaki 'k'.  W każdym szukanym ÅaÅcuchu wybierany
               jest w oparciu o statyczne tablice rozkÅadu najrzadziej
               wystÄpujÄcy znak. ÅaÅcuch jest poszukiwany w miejscach, gdzie
               znajduje siÄ ten najrzadszy znak.)

               Na przykÅad oto pÄtla, która wstawia wpisy tworzÄce indeks
               przed każdÄ liniÄ, zawierajÄcÄ okreÅlony wzorzec:

                   while (<>) {
                       study;
                       print ".IX foo\n" if /\bfoo\b/;
                       print ".IX bar\n" if /\bbar\b/;
                       print ".IX blurfl\n" if /\bblurfl\b/;
                       ...
                       print;
                   }

               Użycie study spowoduje szukanie /\bfoo\b/ tylko w miejscach
               $_, które zawierajÄ "f", gdyż jest to najrzadszy znak.
               Ogólnie, daje to duże zyski, poza przypadkami patologicznymi.
               Jedynym pytaniem jest to, czy zachowuje ci to wiÄcej czasu niż
               zabraÅo zbudowanie powiÄzanej listy.

               Zauważ, że jeÅli musisz szukaÄ ÅaÅcuchów, o których nic nie
               wiesz, aż do uruchomienia, to możesz zbudowaÄ caÅÄ pÄtlÄ jako
               ÅaÅcuch i evalowaÄ to, by zapobiec ciÄgÅemu rekompilowaniu
               wzorców. W poÅÄczeniu z czynieniem $/ niezdefiniowanym, aby
               wessaÄ caÅe pliki jako jeden rekord, może to byÄ bardzo
               szybkie, czÄsto szybsze niż specjalizowane programy typu
               fgrep(1). NastÄpujÄcy przykÅad skanuje listÄ plików (@files) w
               poszukiwaniu listy sÅów (@words) i drukuje nazwy plików,
               zawierajÄcych odpowiednik:

                   $search = 'while (<>) { study;';
                   foreach $word (@words) {
                       $search .= "++\$seen{\$ARGV} if /\\b$word\\b/;\n";
                   }
                   $search .= "}";
                   @ARGV = @files;
                   undef $/;
                   eval $search;               # to krzyczy
                   $/ = "\n";          # ustaw normalny rozdzielacz wejÅcia
                   foreach $file (sort keys(%seen)) {
                       print $file, "\n";
                   }


       sub BLOK

       sub NAZWA

       sub NAZWA BLOK
               Nie jest to prawdziwa funkcja, lecz definicja podprocedury.
               JeÅli zawiera tylko NAZWÄ (i przypuszczalnie prototypy), jest
               to tylko deklaracja.  Bez NAZWY jest to deklaracja anonimowej
               funkcji i zwraca wartoÅÄ: referencjÄ CODE zawÄżenia, które
               wÅaÅnie utworzyÅeÅ. Dla dalszych szczegóÅów, zobacz stronÄ
               podrÄcznika perlref(1).

       substr WYRAÅ»,OFFSET,DÅUGOÅÄ

       substr WYRAÅ»,OFFSET
               WyciÄga z WYRAÅ» podÅaÅcuch i zwraca go. Pierwszy znak znajduje
               siÄ pod offsetem 0, lub tym, na co ustawiÅeÅ $[ (lecz nie rób
               tego).  JeÅli OFFSET jest ujemny, rozpoczyna siÄ w tej
               odlegÅoÅci od koÅca ÅaÅcucha. JeÅli DÅUGOÅÄ jest pominiÄta,
               zwracane jest wszystko, aż do koÅca ÅaÅcucha. JeÅli DÅUGOÅÄ
               jest ujemna, pozostawia tyle znaków z koÅca ÅaÅcucha.

               Funkcji substr() możesz użyÄ jako lwartoÅci, w którym
               wypadku WYRAÅ» musi byÄ lwartoÅciÄ. JeÅli przyznasz coÅ
               krótszego niż DÅUGOÅÄ, ÅaÅcuch zostanie skrócony, a jeÅli
               coÅ dÅuższego, to ÅaÅcuch zostanie rozciÄgniÄty. Aby zachowaÄ
               staÅÄ dÅugoÅÄ ÅaÅcucha, możesz potrzebowaÄ dopeÅniÄ, lub
               obciÄÄ wartoÅci przy użyciu sprintf().

       symlink STARYPLIK,NOWYPLIK
               Tworzy nowÄ nazwÄ pliku, dowiÄzanÄ symbolicznie do starej. Po
               sukcesie zwraca 1, w przeciwnym wypadku 0. Na systemach nie
               obsÅugujÄcych dowiÄzaÅ symbolicznych, funkcja ta powoduje bÅÄd
               krytyczny podczas dziaÅania. Aby go wychwyciÄ, użyj eval:

                   $symlink_exists = (eval {symlink("","")};, $@ eq '');


       syscall LISTA
               WywoÅuje wywoÅanie systemowe, podane jako pierwszy element
               listy, przekazujÄc resztÄ elementów jako argumenty wywoÅania.
               JeÅli nie jest to zaimplementowane, powoduje bÅÄd krytyczny.
               Argumenty sÄ interpretowane nastÄpujÄco: jeÅli podany argument
               jest numeryczny, przekazywany argument to int. JeÅli nie,
               przekazywany jest wskaźnik do wartoÅci tekstowej.  Odpowiadasz
               za upewnienie siÄ, że ÅaÅcuch jest doÅÄ dÅugi, by odebraÄ
               okreÅlony wynik, który może byÄ do niego zapisany. JeÅli
               twoje argumenty int nie sÄ literaÅami i nie byÅy nigdy
               interpretowane w kontekÅcie numerycznym, możesz byÄ zmuszonym
               dodaÄ do nich 0, aby wymusiÄ na nich wyglÄd liczbowy.

                   require 'syscall.ph';               # może byÄ niezbÄdne h2ph
                   syscall(&SYS_write, fileno(STDOUT), "hi there\n", 9);

               Zauważ, że perl obsÅuguje przekazywanie do 14 argumentów do
               wywoÅania systemowego, co w praktyce powinno wystarczyÄ.

       sysopen UCHWYTPLIKU,NAZWAPLIKU,TRYB

       sysopen UCHWYTPLIKU,NAZWAPLIKU,TRYB,PRAWA
               Otwiera plik NAZWAPLIKU i wiÄże go z UCHWYTEMPLIKU. JeÅli
               UCHWYTPLIKU jest wyrażeniem, to jego wartoÅÄ jest używana
               jako nazwa rzeczywistego uchwytu pliku. Funkcja ta woÅa
               podlegajÄcÄ jej funkcjÄ systemu operacyjnego, open z
               parametrami NAZWAPLIKU, TRYB, PRAWA.

               PrawidÅowe wartoÅci i bity flag parametru TRYB sÄ zależne od
               systemu; sÄ one dostÄpne przez standardowy moduÅ Fcntl. Jednak
               z przyczyn historycznych, niektóre wartoÅci sÄ uniwersalne;
               zero oznacza tylko dla odczytu, jeden tylko dla zapisu, a dwa
               dla zapisu i odczytu.

               JeÅli plik NAZWAPLIKU nie istnieje, a wywoÅanie open go tworzy
               (zazwyczaj dlatego, że TRYB zawiera flagÄ O_CREAT), to wartoÅÄ
               PRAW okreÅla prawa nowo utworzonego pliku. JeÅli sÄ one
               pominiÄte, używana jest domyÅlna wartoÅÄ 0666, która
               umożliwia wszystkim odczyt i zapis. WartoÅÄ ta ma sens, zobacz
               umask.

               ModuÅ IO::File daje bardziej obiektowe podejÅcie do tych
               rzeczy.

       sysread UCHWYTPLIKU,SKALAR,DÅUGOÅÄ,OFFSET

       sysread UCHWYTPLIKU,SKALAR,DÅUGOÅÄ
               Próbuje odczytaÄ DÅUGOÅÄ bajtów danych do zmiennej SKALAR.
               Odczyt nastÄpuje z pliku wskazywanego przez UCHWYTPLIKU, przy
               użyciu wywoÅania systemowego read(2). Pomija to stdio, wiÄc
               ÅÄczenie tej funkcji z innym rodzajami odczytu, z print(),
               write(), seek(), lub tell() może powodowaÄ problemy. Zwraca
               iloÅÄ odczytanych bajtów, lub undef w wypadku bÅÄdu. SKALAR
               bÄdzie rozciÄgany tak, by pasowaÅ do liczby odczytanych
               bajtów.

               Aby spowodowaÄ odczyt danych z któregoÅ miejsca ÅaÅcucha
               (różnego niż poczÄtek), można podaÄ dodatkowo parametr
               OFFSET. JeÅli parametr ten jest ujemny, to wskazywana jest
               pozycja przesuniÄta o tyleż bajtów w tyÅ od koÅca ÅaÅcucha.
               JeÅli dodatni offset jest wiÄkszy od dÅugoÅci SKALARA, to
               wynikiem jest wypeÅnienie do wymaganego rozmiaru znakami "\-",
               a nastÄpnie doklejenie odczytu.

       sysseek UCHWYTPLIKU,POZYCJA,GDZIE
               Zmienia pozycjÄ UCHWYTUPLIKU przy użyciu wywoÅania systemowego
               lseek(2). Pomija stdio, wiÄc ÅÄczenie tego z odczytami (innymi
               niż sysread()), z print(), write(), seek(), lub tell() może
               wprowadziÄ problemy. UCHWYTPLIKU może byÄ wyrażeniem,
               którego wartoÅÄ daje nazwÄ uchwytu pliku. WartoÅci dla GDZIE
               to 0 dla ustawienia nowej pozycji, 1 dla dodania nowej pozycji
               do bieżÄcej i 2 do ustawienia pozycji EOF plus offset. Dla
               parametru GDZIE można używaÄ staÅych SEEK_SET, SEEK_CUR i
               SEEK_END z moduÅu IO::Seekable lub POSIX.

               Zwracana jest nowa pozycja, lub wartoÅÄ niezdefiniowana w
               wypadku bÅÄdu.  Pozycja zerowa zwracana jest jako ÅaÅcuch "0
               but true"; tak wiÄc sysseek() zwraca TRUE po sukcesie i FALSE
               po bÅÄdzie, lecz wciÄż możesz Åatwo ustaliÄ nowÄ pozycjÄ.

       system LISTA
               Robi dokÅadnie to samo, co "exec LISTA", poza tym, że dokonuje
               przed tym forka i proces rodzicielski czeka, aż dziecko dokona
               żywota. Zauważ, że przetwarzanie argumentów różni siÄ,
               zależnie od liczby argumentów. WartoÅÄ zwracana jest statusem
               wyjÅcia programu, zwróconym przez wywoÅanie wait(). Aby
               uzyskaÄ rzeczywistÄ wartoÅÄ wyjÅcia, podziel jÄ przez 256.
               Zobacz też opis exec, znajdujÄcy siÄ gdzieÅ w tym dokumencie.
               Nie jest to sposób, którego należy używaÄ do
               przechwytywania wyjÅcia z komendy, dla tego celu użyj zwykÅych
               odwróconych apostrofów (backticks?) lub qx//, jak opisano w
               sekcji `ÅAÅCUCH` podrÄcznika perlop(1).

               Ponieważ zarówno system() i odwrotne apostrofy blokujÄ SIGINT
               i SIGQUIT, ubicie ich nie powoduje przerwania twojego programu.

                   @args = ("command", "arg1", "arg2");
                   system(@args) == 0
                        or die "system @args siÄ nie powiódÅ: $?"

               A oto bardziej wyrafinowany przykÅad analizowania wartoÅci
               zwracanej przez system(). Ma to miejsce na systemie unixowym i
               jest robione, aby sprawdziÄ wszystkie możliwoÅci, wÅÄcznie z
               sygnaÅami i zrzutami core.

                   $rc = 0xffff & system @args;
                   printf "system(%s) zwróciŠ%#04x: ", "@args", $rc;
                   if ($rc == 0) {
                       print "normalne zakoÅczenie\n";
                   }
                   elsif ($rc == 0xff00) {
                       print "komenda siÄ nie powiodÅa: $!\n";
                   }
                   elsif ($rc > 0x80) {
                       $rc >>= 8;
                       print "niezerowy status wyjÅcia $rc\n";
                   }
                   else {
                       print "skoÅczyÅ z ";
                       if ($rc &   0x80) {
                           $rc &= ~0x80;
                           print "zrzutem core z ";
                       }
                       print "sygnaÅem $rc\n"
                   }
                   $ok = ($rc != 0);


       syswrite UCHWYTPLIKU,SKALAR,DÅUGOÅÄ,OFFSET

       syswrite UCHWYTPLIKU,SKALAR,DÅUGOÅÄ
               Próbuje zapisaÄ DÅUGOÅÄ bajtów ze SKALARA do pliku podanego
               przez UCHWYTPLIKU przy użyciu wywoÅania systemowego write(2).
               Pomija stdio, wiÄc ÅÄczenie tego z odczytami (innymi niż
               sysread()), z print(), write(), seek(), lub tell() może
               spowodowaÄ problemy. Zwraca liczbÄ zapisanych bajtów, lub
               undef w wypadku bÅÄdu. JeÅli dÅugoÅÄ jest wiÄksza niż dostÄpne
               dane, zapisywanych jest tylko tyle danych, ile jest dostÄpnych.

               Dodatkowo można podaÄ OFFSET, aby zapisaÄ dane z jakiejÅ
               czÄÅci ÅaÅcucha, która nie jest poczÄtkiem. Ujemna wartoÅÄ
               offsetu nakazuje zapisywanie od miejsca, przesuniÄtego o tyle
               bajtów od koÅca ÅaÅcucha.

       tell UCHWYTPLIKU

       tell    Zwraca bieżÄcÄ pozycjÄ pliku dla UCHWYTUPLIKU. UCHWYTPLIKU
               może byÄ wyrażeniem, którego wartoÅÄ podaje nazwÄ
               rzeczywistego uchwytu pliku. JeÅli UCHWYTPLIKU jest pominiÄty,
               zakÅadany jest plik, z którego ostatnio czytano.

       telldir UCHWYTKATALOGU
               Zwraca bieżÄcÄ pozycjÄ funkcji readdir() dla UCHWYTUKATALOGU.
               Do seekdir() można przekazaÄ wartoÅÄ, każÄcÄ osiÄgnÄc
               okreÅlonÄ pozycjÄ w katalogu.

       tie ZMIENNA,NAZWAKLASY,LISTA
               Funkcja ta ÅÄczy zmiennÄ z klasÄ pakietu, która opisuje jej
               implementacjÄ.  ZMIENNA jest nazwÄ czarowanej zmiennej.
               NAZWAKLASY jest nazwÄ klasy, implementujÄcej obiekty wÅaÅciwego
               typu. Wszelkie dodatkowe argumenty sÄ przekazywane metodzie
               "new" klasy (czyli TIESCALAR, TIEARRAY, lub TIEHASH).
               Zazwyczaj, argumenty te  wyglÄdajÄ tak, jak te, które sÄ
               przekazywane funkcji dbm_open() z C. Obiekt, zwrócony przez
               metodÄ "new" jest też zwracany przez tie(), co jest przydatne,
               jeÅli chcesz dostaÄ siÄ do innych metod w NAZWIEKLASY.

               Zauważ, że funkcje takie, jak keys() i valuse() mogÄ zwracaÄ
               wielkie wartoÅci tablicowe, jeÅli użyÄ je na dużych
               obiektach, takich jak pliki DBM. Lepiej może byÄ użyÄ funkcji
               each() i na nich iterowaÄ. PrzykÅad:

                   # drukuj offsety pliku historii
                   use NDBM_File;
                   tie(%HIST, 'NDBM_File', '/usr/lib/news/history', 1, 0);
                   while (($key,$val) = each %HIST) {
                       print $key, ' = ', unpack('L',$val), "\n";
                   }
                   untie(%HIST);

               Klasa, implementujÄca tablicÄ asocjacyjnÄ, powinna mieÄ
               nastÄpujÄce metody:

                   TIEHASH classname, LIST
                   DESTROY this
                   FETCH this, key
                   STORE this, key, value
                   DELETE this, key
                   EXISTS this, key
                   FIRSTKEY this
                   NEXTKEY this, lastkey

               Klasa, implementujÄca zwykÅÄ tablicÄ, powinna mieÄ nastÄpujÄce
               metody:

                   TIEARRAY classname, LIST
                   DESTROY this
                   FETCH this, key
                   STORE this, key, value
                   [others TBD]

               Klasa, implementujÄca skalar, powinna mieÄ nastÄpujÄce metody:

                   TIESCALAR classname, LIST
                   DESTROY this
                   FETCH this,
                   STORE this, value

               W przeciwieÅstwie do funkcji dbmopen(), funkcja tie() nie
               używa, lub wymaga dla ciebie moduÅów (use, require)--musisz o
               to zadbaÄ samodzielnie. Zobacz podrÄcznik DB_File oraz moduÅ
               Config dla interesujÄcych implementacji tie().

       tied ZMIENNA
               Zwraca referencjÄ do obiektu kryjÄcego siÄ pod ZMIENNÄ
               (wartoÅÄ, która byÅa poczÄtkowo zwrócona przez tie(), które
               powiÄzaÅ zmiennÄ z pakietem.) Gdy ZMIENNA nie jest powiÄzana,
               zwracana jest wartoÅÄ niezdefiniowana.

       time    Zwraca liczbÄ sekund od poczÄtku epoki (tj. na MacOs od
               00:00:00, 1 Stycznia, 1904, a od 00:00:00 UTC, 1 Stycznia, 1970
               dla wiÄkszoÅci innych systemów).  WystarczajÄce do przekazania
               dla gmtime() lub localtime().

       times   Zwraca czteroelementowÄ tablicÄ, podajÄcÄ w sekundach czasy
               użytkownika i systemu. WartoÅci sÄ dla tego procesu, oraz dla
               dzieci tego procesu.

                   ($user,$system,$cuser,$csystem) = times;


       tr///   Operator translacji. To samo co y///. Zobacz stronÄ perlop(1).

       truncate UCHWYTPLIKU,DÅUGOÅÄ

       truncate WYRAÅ»,DÅUGOÅÄ
               Skraca plik, otwarty na UCHWYCIEPLIKU lub nazwany przez WYRAÅ»
               do podanej dÅugoÅci. Na systemach, gdzie nie jest to
               zaimplementowane, powoduje bÅÄd krytyczny.

       uc WYRAÅ»

       uc      Zwraca WYRAÅ» w dużych literach. Jest to funkcja wewnÄtrzna,
               implementujÄca escape \U na ÅaÅcuchach ujÄtych w podwójne
               cudzysÅowy.  Szanuje bieżÄce ustawienie LC_CTYPE, jeÅli
               wÅÄczono use locale.  Zobacz podrÄcznik perllocale(1).

               JeÅli WYRAÅ» jest pominiÄte, używa $_.

       ucfirst WYRAÅ»

       ucfirst Zwraca WYRAÅ», z pierwszym znakiem zmienionym na duÅ¼Ä literÄ.
               Jest to funkcja wewnÄtrzna, implementujÄca escape \u na
               ÅaÅcuchach ujÄtych w cudzysÅowy.  Szanuje bieżÄce ustawienie
               LC_CTYPE, jeÅli wÅÄczono use locale.  Zobacz podrÄcznik
               perllocale(1).

               If EXPR is omitted, uses $_.

       umask WYRAÅ»

       umask   Ustawia umaskÄ procesu na WYRAÅ» i zwraca wartoÅÄ poprzedniÄ.
               JeÅli WYRAÅ» jest pominiÄte, po prostu zwraca bieżÄcÄ umaskÄ.
               PamiÄtaj, że umaska jest liczbÄ, zazwyczaj podawanÄ Ã³semkowo;
               nie jest ÅaÅcuchem cyfr ósemkowych. Zobacz opis oct,
               znajdujÄcy siÄ gdzieÅ w tym dokumencie, jeÅli masz tylko
               ÅaÅcuch.

       undef WYRAÅ»

       undef   Powoduje, że wartoÅÄ WYRAÅ», która musi byÄ lwartoÅciÄ, staje
               siÄ niezdefiniowana. Używaj tego tylko na wartoÅciach
               skalarnych, caÅej tablicy, caÅej tablicy asocjacyjnej, lub na
               nazwie podprocedury (przy użyciu "&").  (Używanie tej funkcji
               w innych wypadkach przypuszczalnie nie doprowadzi do takich
               rezultatów, jakich można by oczekiwaÄ.) Zawsze zwraca wartoÅÄ
               niezdefiniowanÄ. Możesz pominÄÄ WYRAÅ»--w tym wypadku nic nie
               jest pozbawiane zdefiniowania, lecz mimo to uzyskujesz wartoÅÄ
               niezdefiniowanÄ, którÄ możesz np. zwróciÄ z podprocedury,
               przypisaÄ zmiennej,lub przekazaÄ jako parametr. PrzykÅady:

                   undef $foo;
                   undef $bar{'blurfl'};             # Porównaj z: delete $bar{'blurfl'};
                   undef @ary;
                   undef %hash;
                   undef &mysub;
                   return (wantarray ? (undef, $errmsg) : undef) if $they_blew_it;
                   select undef, undef, undef, 0.25;
                   ($a, $b, undef, $c) = &foo;       # Ignoruj trzeciÄ zwróconÄ wartoÅÄ


       unlink LISTA

       unlink  Kasuje listÄ plików. Zwraca liczbÄ skasowanych plików.

                   $cnt = unlink 'a', 'b', 'c';
                   unlink @goners;
                   unlink <*.bak>;

               Uwaga: unlink nie skasuje katalogów, chyba że jesteÅ
               superużytkownikiem i przekazaÅeÅ perlowi flagÄ -U. Nawet gdy
               te warunki sÄ speÅnione, bÄdź ostrzeżony, że skasowanie
               katalogu może wywoÅaÄ uszkodzenie systemu plików.  Zamiast
               tego użyj rmdir.

               JeÅli LISTA jest pominiÄta, używa $_.

       unpack WZORZEC,WYRAÅ»
               Unpack robi odwrotnoÅÄ tego, co pack: pobiera ÅaÅcuch,
               reprezentujÄcy strukturÄ i rozwija go na listÄ wartoÅci,
               zwracajÄ wartoÅÄ tablicowÄ (w kontekÅcie skalarnym zwraca tylko
               pierwszÄ wartoÅÄ tablicy). WZORZEC jest tego samego formatu co
               dla funkcji pack. Oto podprocedura, która dokonuje substringu:

                   sub substr {
                       local($what,$where,$howmuch) = @_;
                       unpack("x$where a$howmuch", $what);
                   }

               a potem mamy

                   sub ordinal { unpack("c",$_[0]); } # to samo co ord()

               Dodatkowo, możesz poprzedziÄ pola %<liczbÄ>, wskazujÄc, że
               chcesz <liczba>-bitowÄ sumÄ szesnastkowÄ elementów, zamiast
               samych elementów.  DomyÅlna jest suma 16-bitowa. Na przykÅad,
               nastÄpujÄcy przykÅad oblicza tÄ samÄ liczbÄ co program sum z
               Systemu V:

                   while (<>) {
                       $checksum += unpack("%16C*", $_);
                   }
                   $checksum %= 65536;

               NastÄpujÄcy fragment efektywnie oblicza liczbÄ ustawionych
               bitów w wektorze bitowym:

                   $setbits = unpack("%32b*", $selectmask);


       untie ZMIENNA
               Rozbija powiÄzanie miÄdzy zmiennÄ, a pakietem. Zobacz tie().

       unshift TABLICA,LISTA
               Robi odwrotnÄ rzecz do shift. Lub odwrotnÄ do push, zależnie
               jak na to spojrzeÄ. Dokleja listÄ do poczÄtku tablicy i zwraca
               nowÄ liczbÄ elementów.

                   unshift(ARGV, '-e') unless $ARGV[0] =~ /^-/;

               Zauważ, że LISTA jest doklejana caÅa, a nie jeden element
               naraz, wiÄc doklejone elementy pozostajÄ w tej samej
               kolejnoÅci. Aby jÄ odwróciÄ, użyj reverse.

       use Module LISTA

       use Module

       use Module WERSJA LISTA

       use WERSJA
               Importuje semantykÄ danego moduÅu do bieżÄcego pakietu.
               Ogólnie aliasuje okreÅlone podprocedury lub nazwy zmiennych do
               twojego pakietu. Jest to dokÅadnie równoważne

                   BEGIN { require Module; import Module LIST; }

               poza tym, że Module musi byÄ goÅym sÅowem.

               JeÅli pierwszy argument use jest liczbÄ, to jest ona traktowana
               jako numer wersji, zamiast nazwa moduÅu. JeÅli wersja
               interpretera perla jest mniejsza niż WERSJA, to wyÅwietlony
               zostanie komunikat o bÅÄdzie, a perl natychmiast zakoÅczy
               dziaÅanie. Jest to czÄsto przydatne, jeÅli chcesz sprawdziÄ
               wersjÄ perla przed używaniem moduÅów bibliotecznych, które
               zmieniÅy siÄ w sposób niekompatybilny od czasu starszych
               wersji perla.  (staramy siÄ by tak nie byÅo.)

               SÅowo BEGIN wymusza by require i import zaszÅy podczas
               kompilacji.  Require zapewnia, że moduÅ bÄdzie zaÅadowany do
               pamiÄci, jeÅli wczeÅniej nie byÅ. Import nie jest
               wbudowany--jest to tylko zwykÅe, statyczne wywoÅanie metody
               pakietu "Module" aby powiedzieÄ moduÅowi, by zaimportowaÅ listÄ
               wÅaÅciwoÅci do pakietu bieżÄcego. ModuÅ może implementowaÄ
               swojÄ metodÄ import w dowolny sposób, choÄ wiÄkszoÅÄ moduÅów
               woli wyprowadzaÄ swojÄ metodÄ poprzez dziedziczenie z klasy
               Exporter, zdefiniowanej w module Exporter, Zobacz podrÄcznik
               Exporter.  JeÅli nie ma żadnej metody importujÄcej, to bÅÄd
               jest cicho ignorowany. Może siÄ to w przyszÅych wersjach
               zmieniÄ na bÅÄd krytyczny.

               JeÅli nie chcesz zmieniania swojej przestrzeni nazw, zaÅÄcz
               jawnie pustÄ listÄ:

                   use Module ();

               Jest to dokÅadnie równoważne

                   BEGIN { require Module; }

               JeÅli miÄdzy Module, a LISTA jest obecny argument WERSJA, to
               use wywoÅa metodÄ VERSION klasy Module z podanÄ wersjÄ, jako
               argumentem. DomyÅlna metoda VERSION, dziedziczona z klasy
               Universal, zakracze jeÅli podana wersja jest wiÄksza niż
               wartoÅÄ zmiennej $Module::VERSION. (Zauważ, że nie ma
               przecinka po WERSJI!)

               Ponieważ jest to szeroko otwarty interfejs, można tak
               implementowaÄ też pragmy (dyrektywy kompilatora). Obecnie
               zaimplementowane pragmy to:

                   use integer;
                   use diagnostics;
                   use sigtrap qw(SEGV BUS);
                   use strict  qw(subs vars refs);
                   use subs    qw(afunc blurfl);

               Te pseudo moduÅy importujÄ semantykÄ do bieżÄcego zakresu
               bloku, w przeciwieÅstwie  do zwykÅych moduÅów, które
               importujÄ symbole do bieżÄcego pakietu.

               Istnieje odpowiadajÄca komenda "no", która de-importuje rzeczy
               zaimportowane przez use, np. wywoÅuje metodÄ unimport Module
               LISTA zamiast import.

                   no integer;
                   no strict 'refs';

               JeÅli nie ma metody unimport, wywoÅanie to koÅczy siÄ bÅÄdem
               krytycznym.

               Dla listy standardowych moduÅów i pragm, zobacz podrÄcznik
               perlmod.

       utime LISTA
               Zmienia czasy dostÄpu i modyfikacji na każdym pliku z listy.
               Pierwsze dwa elementy listy muszÄ byÄ numerycznymi czasami
               dostÄpu i modyfikacji, dokÅadnie w tej kolejnoÅci. Zwraca
               liczbÄ plików, na których operacja siÄ powiodÅa. Czas
               modyfikacji inode jest ustawiany na czas bieżÄcy. PrzykÅad
               komendy "touch":

                   #!/usr/bin/perl
                   $now = time;
                   utime $now, $now, @ARGV;


       values HASH
               Zwraca normalnÄ tablicÄ, skÅadajÄcÄ siÄ ze wszystkich wartoÅci
               wymienionej tablicy asocjacyjnej. W kontekÅcie skalarnym,
               zwracana jest liczba wartoÅci.  WartoÅci sÄ zwracane w doÅÄ
               losowej kolejnoÅci, lecz jest ona ta sama, co zwracana przez
               funkcje keys() lub each(). Jako efekt uboczny, funkcja resetuje
               iterator tablicy asocjacyjnej. Zobacz też keys(), each(), i
               sort().

       vec WYRAÅ»,OFFSET,BITY
               Traktuje ÅaÅcuch WYRAÅ» jako wektor caÅkowitych integerów i
               zwraca wartoÅÄ pola bitowego, wskazanego przez OFFSET. BITY
               podajÄ liczbÄ bitów, które sÄ zarezerwowane dla każdego
               wpisu w wektorze bitowym.  Musi to byÄ potÄga dwójki do 1 do
               32. vec może też byÄ przypisany do czegoÅ--w tym wypadku
               potrzebne sÄ nawiasy, aby nadaÄ wyrażeniu wÅaÅciwy priorytet,
               jak w

                   vec($image, $max_x * $x + $y, 8) = 3;

               Wektory utworzone przez vec() mogÄ też byÄ obsÅugiwane przez
               operatory logiczne ⎪, & i ^, które zaÅożÄ, że bitowa
               operacja wektorowa jest oczekiwana gdy obydwa operandy sÄ
               ÅaÅcuchami.

               Aby przeksztaÅciÄ wektor bitowy na tablicÄ ÅaÅcuchowÄ zer i
               jedynek, użyj:

                   $bits = unpack("b*", $vector);
                   @bits = split(//, unpack("b*", $vector));

               JeÅli znasz dokÅadnÄ dÅugoÅÄ w bitach, możesz podaÄ jÄ zamiast
               *.

       wait    Czeka, aż proces potomny siÄ nie zakoÅczy i zwraca pid
               zamkniÄtego procesu, lub -1, jeÅli go nie byÅo. Status jest
               zwracany w $?.

       waitpid PID,FLAGI
               Czeka, aż proces potomny siÄ zakoÅczy i zwraca pid zamkniÄtego
               procesu, lub -1, jeÅli nie byÅo takiego procesu. Status jest
               zwracany w $?.  JeÅli powiesz

                   use POSIX ":sys_wait_h";
                   ...
                   waitpid(-1,&WNOHANG);

               to możesz dokonaÄ nieblokujÄcego oczekiwania na dowolny
               proces. NieblokujÄce oczekiwanie jest dostÄpne na maszynach,
               obsÅugujÄcych albo wywoÅanie waitpid(2), albo wait4(2). Jednak
               oczekiwanie na konkretny pid z FLAGAMI wartoÅci 0 jest
               zaimplementowane wszÄdzie. (Perl emuluje wywoÅanie systemowe,
               pamiÄtajÄc wartoÅci statusu procesów, które zakoÅczyÅy siÄ,
               lecz nie byÅy odczytane przez skrypt perla)

       wantarray
               Zwraca TRUE, jeÅli kontekst obecnie wykonywanej podprocedury
               szuka wartoÅci listowej. Zwraca FALSE, jeÅli kontekst szuka
               skalara.  Zwraca wartoÅÄ niezdefiniowanÄ, jeÅli kontekst nie
               szuka wartoÅci (void).

                   return unless defined wantarray;    # nie myÅl o robieniu wiÄcej
                   my @a = complex_calculation();
                   return wantarray ? @a : "@a";


       warn LIST
               Produkuje komunikat na STDERR, podobnie jak die(), lecz nie
               wychodzi i nie wyrzuca wyjÄtku.

               JeÅli zainstalowany jest handler $SIG{__WARN__), nie sÄ
               drukowane żadne komunikaty. Od handlera zależy obsÅuga
               komunikatu, gdy tak zadecyduje (np. przekonwertowanie go na
               die()). WiÄkszoÅÄ handlerów musi wiÄc wywoÅywaÄ warn()
               ponownie, aby wyÅwietliÄ komunikat. Zauważ, że jest to
               bezpieczne i nie spowoduje nieskoÅczonej pÄtli, gdyż haki
               __WARN__ nie sÄ woÅane z niego samego.

               Zachowanie to jest trochÄ inne od tego dla $SIG{__DIE__}
               (które nie powstrzymywaÅy tekstu komunikatów, lecz mogÅy
               wywoÅaÄ die() ponownie, aby je zmieniÄ).

               Używanie handlerów __WARN__ daje potÄżne narzÄdzie do
               wyciszania wszystkich ostrzeżeŠ(nawet tak zwanych
               obowiÄzkowych). Na przykÅad:

                   # wywal wszystkie ostrzeżenia czasu kompilacji
                   BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
                   my $foo = 10;
                   my $foo = 20;          # bez ostrzegania o zduplikowaniu my $foo
                                          # lecz przecież sam siÄ o to prosiÅeÅ!
                   # bez ostrzeżeÅ czasu kompilacji i czasu dziaÅania przed tym miejscem
                   $DOWARN = 1;

                   # ostrzeżenia czasu dziaÅania sÄ tu wÅÄczone
                   warn "\$foo is alive and $foo!";     # pojawia siÄ

               Zobacz stronÄ perlvar(1) dla szczegóÅów o ustawianiu wpisów
               %SIG i dla przykÅadów.

       write UCHWYTPLIKU

       write WYRAÅ»

       write   Zapisuje sformatowany rekord (prawdopodobnie wieloliniowy) do
               podanego pliku, używajÄc formatu zwiÄzanego z tym plikiem.
               DomyÅlnie format dla pliku jest tym, który ma tÄ samÄ nazwÄ,
               co uchwyt pliku, lecz można go zmieniÄ z pomocÄ funkcji
               select(), przypisujÄc nazwÄ formatu zmiennej $~.

               PoczÄtek przetwarzania formy jest obsÅugiwany automatycznie:
               jeÅli nie ma miejsca na stronie na sformatowany rekord, to
               strona jest przewijana przez wpisanie form feed, nastÄpnie
               używany jest specjalny format góry-strony (do formatowania
               nagÅówka nowej strony), a potem wpisany jest rekord.
               DomyÅlnie, format góry-strony jest nazwÄ uchwytu pliku z
               dodanym "_TOP", lecz można go ustawiÄ dynamicznie, przyznajÄc
               zmiennej $^ nazwÄ podczas gdy wybrany (select) jest uchwyt
               pliku.  Liczba pozostajÄcych linii bieżÄcej strony znajduje
               siÄ w zmiennej $- i może byÄ ustawiona na 0 aby wymusiÄ nowÄ
               stronÄ.

               JeÅli UCHWYTPLIKU nie jest podany, wyjÅcie idzie do bieżÄcego
               domyÅlnego kanaÅu wyjÅcia, którym jest poczÄtkowo STDOUT, a
               który może byÄ zmieniony operatorem select. JeÅli UCHWYTPLIKU
               jest wyrażeniem WYRAŻ, to jest ono analizowane, a wynikowy
               ÅaÅcuch jest używany do podejrzenia nazwy UCHWYTUPLIKU. Dla
               dalszych informacji o formatach, zobacz stronÄ perlform(1).

               Zauważ, że zapis NIE jest odwrotnoÅciÄ odczytu. Niestety.

       y///    Operator translacji. To samo co tr///. Zobacz stronÄ perlop(1).


INFORMACJE O TÅUMACZENIU
       Powyższe tÅumaczenie pochodzi z nieistniejÄcego już Projektu
       TÅumaczenia Manuali i może nie byÄ aktualne. W razie zauważenia
       różnic miÄdzy powyższym opisem a rzeczywistym zachowaniem
       opisywanego programu lub funkcji, prosimy o zapoznanie siÄ z oryginalnÄ
       (angielskÄ) wersjÄ strony podrÄcznika za pomocÄ polecenia:

              man --locale=C 1 perlfunc

       Prosimy o pomoc w aktualizacji stron man - wiÄcej informacji można
       znaleÅºÄ pod adresem http://sourceforge.net/projects/manpages-pl/.



3rd Berkeley Distribution    perl 5.004, patch 01                  PERLFUNC(1)