Provided by: manpages-pl_20060617-3_all bug

NAZWA

       perlfunc - Wbudowane funkcje perla

OPIS

       Funkcje z tej sekcji mog sluy pomoc w wyraeniach. Podpadaj one pod dwie
       glowne kategorie: operatory list, oraz nazwane operatory
       jednoargumentowe. [Przyp. tlum.: w perlu nie ma prawdziwych funkcji, s
       operatory] Roni si one w zwizku priorytetowym przecinkiem.  (zobacz
       tablic priorytetow na stronie perlop(1).). Operatory list pobieraj
       wicej ni jeden argument, podczas gdy operatory jednoargumentowe, z
       definicji, nigdy nie bior wicej ni jeden argument. Tak wic przecinek
       koczy argument operatora jednoargumentowego, lecz jedynie rozdziela
       argumenty operatora listy. Ogolnie, operator jednoargumentowy daje
       swojemu argumentowi kontekst skalarny, podczas gdy operator listowy moe
       dawa zarowno kontekst skalarny, jak i listowy. Jeli daje obydwa, to
       argumenty skalarne bd najpierw, a za nimi nastpi argumenty listowe.
       (Zauwa, e moe istnie tylko jeden argument listowy.) Np. funkcja
       splice() ma trzy argumenty skalarne, za ktorymi nastpuje lista.

       W opisach skladni, ktore s niej, operatory list, ktore oczekuj listy (i
       daj kontekst listowy elementom tej listy) s pokazywane z argumentem
       LISTA.  Lista taka moe sklada si z dowolnej kombinacji argumentow
       skalarnych lub wartoci listowych; wartoci listowe bd wlczone w list
       tak, jakby kady pojedynczy element byl interpolowany w tym punkcie
       listy, tworzc dlusz, jednowymiarow warto listow. Elementy typu LISTA
       powinny by oddzielone przecinkami.

       Kada funkcja z poniszej listy, moe by uyta bez, albo z nawiasami wokol
       swoich argumentow. (Opisy skladni pomijaj nawiasy.) Jeli uywasz
       nawiasow, to prosta (lecz czasem zaskakujca) regula jest taka: WYGLDA
       jak funkcja, wic JEST funkcj i priorytet nie ma znaczenia. W przeciwnym
       wypadku jest to operator listowy lub operator jednoargumentowy i
       priorytet si liczy. I biala spacja midzy funkcj i lewym nawiasem nie
       liczy si--wic musisz by czasem ostrony:

           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.

       Jeli uruchamiasz perla z przelcznikiem -w, to bdziesz o tym ostrzegany.
       Na przyklad trzecia z powyszych linii daje w efekcie:

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

       Dla instrukcji, ktore mog by uywane zarowno w kontekstach skalarnych,
       jak i listowych, bld nie wymagajcy przerwania jest ogolnie wskazywany w
       kontekcie skalarnym przez zwrot niezdefiniowanej wartoci, a w kontekcie
       listowym przez zwrot listy null.

       Zapamitaj nastpujc regul:

       NIE ISTNIEJE OG'OLNA REGU/LA KONWERSJI LISTY W SKALAR!

       Kady operator i funkcja decyduje, jaki rodzaj wartoci jest najbardziej
       odpowiedni do zwrocenia w kontekcie skalarnym. Niektore operatory
       zwracaj dlugo listy, ktora bylaby zwrocona w kontekcie listowym.
       Niektore zwracaj pierwsz warto listy. Niektore zwracaj ostatni warto
       listy.  Inne zwracaj liczb pomylnych operacji. Ogolnie, robi one to,
       czego chcesz, chyba e oczekujesz spojnoci.

       Funkcje perla wed/l/lug kategorii

       Oto funkcje perla (wlczajc rzeczy, ktore wygldaj jak funkcje, np.
       niektore slowa kluczowe i nazwane operatory), poukladane wedlug
       kategorii.  Niektore funkcje pojawiaj si w wicej ni jednym miejscu.

       Funkcje dla skalarow lub lacuchow
            chomp, chop, chr, crypt, hex, index, lc, lcfirst, length, oct,
            ord, pack, q/LACUCH/, qq/LACUCH/, reverse, rindex, sprintf,
            substr, tr///, uc, ucfirst, y///

       Wyraenia regularne i porownywanie wzorcow
            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/LACUCH/, reverse, sort, unpack

       Funkcje dla %HASHow (tablic asocjacyjnych)
            delete, each, exists, keys, values

       Funkcje wejcia i wyjcia
            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 okrelonej dlugoci lub rekordow
            pack, read, syscall, sysread, syswrite, unpack, vec

       Funkcje dla deskryptorow plikow, plikow lub katalogow
            -X, chdir, chmod, chown, chroot, fcntl, glob, ioctl, link, lstat,
            mkdir, open, opendir, readlink, rename, rmdir, stat, symlink,
            umask, unlink, utime

       Slowa kluczowe zwizane z kontrol dzialania programu
            caller, continue, die, do, dump, eval, exit, goto, last, next,
            redo, return, sub, wantarray

       Slowa kluczowe zwizane z zakresami
            caller, import, local, my, package, use

       Rone funkcje
            defined, dump, eval, formline, local, my, reset, scalar, undef,
            wantarray

       Funkcje dla procesow i grup procesow
            alarm, exec, fork, getpgrp, getppid, getpriority, kill, pipe,
            qx/LACUCH/, setpgrp, setpriority, sleep, system, times, wait,
            waitpid

       Slowa kluczowe zwizane z modulami perla
            do, import, no, package, require, use

       Slowa kluczowe zwizane z klasami i obiektowoci
            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 midzyprocesowej Systemu V
            msgctl, msgget, msgrcv, msgsnd, semctl, semget, semop, shmctl,
            shmget, shmread, shmwrite

       Pobieranie informacji uytkownika 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 zwizane 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 bylo slowem kluczowym w perl4, lecz w perl5 jest to
            operator, ktory moe by uywany w wyraeniach.

       Funkcje przedawnione w perl5
            dbmclose, dbmopen

       Alfabetyczny listing funkcji perla

       -X UCHWYTPLIKU

       -X WYRA

       -X      Test pliku, gdzie X jest jedn z niej wymienionych liter. Ten
               jednoargumentowy operator pobiera argument, nazw pliku lub jego
               uchwyt.  Nastpnie testuje plik i sprawdza, czy co jest w nim
               prawdziwe. Jeli argument zostanie pominity, testuje $_, nie
               liczc -t, ktore testuje STDIN.  Zasadniczo zwraca 1 dla wyniku
               pozytywnego i '' dla negatywnego, a warto niezdefiniowan, jeli
               plik nie istnieje. Mimo miesznych nazw, priorytety s takie same
               jak kadym innym nazwanym operatorze jednoargumentowym i
               argument moe by otoczony nawiasami.  Operator moe 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  Wlacicielem 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  Wlacicielem 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 dowizaniem 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 (przeciwiestwo -T).

                   -M  Wiek pliku w dniach, gdy uruchomil si skrypt
                   -A  To samo dla czasu dostpu.
                   -C  To samo dla zmiany informacji inode.

               Interpretacja operatorow praw pliku -r, -R, -w, -W, -x i -X
               bazuje jedynie na prawach pliku i uid/gid uytkownika. Mog
               istnie inne powody, dla ktorych w rzeczywistoci nie moesz go
               odczyta, zapisa lub uruchomi. Zauwa te, e dla superuytkownika,
               operatory -r, -R, -w, i -W zawsze zwracaj 1, a -x i -X zwracaj
               1, jeli ustawiony jest tak dowolny bit wykonania. Skrypty
               uruchamiane przez superuytkownika powinny wic wywolywa do celow
               testowania praw pliku funkcj stat() lub tymczasowo zmieni uid
               na co innego.

               Przyklad:

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

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

               Przelczniki -T i -B dzialaj tak, e testuj pierwszy blok pliku w
               poszukiwaniu dziwnych znakow, takich jak dziwne kody sterujce,
               lub znaki z wysokiego zestawu znakow. Jeli jest ich zbyt wiele
               (>30%), to jest to plik -B, w przeciwnym wypadku to plik -T.
               Dodatkowo, kady plik, zawierajcy w pierwszym bloku null jest
               uwaany za plik binarny. Jeli -T lub -B jest uywane na uchwycie
               pliku, to testowany jest biecy bufor standardowego wejcia
               zamiast pierwszego bloku.  Zarowno -T jak i -B zwracaj odpowied
               pozytywn dla pliku null lub pliku, ktory jest na EOF podczas
               testowania jego uchwytu. Z uwagi na to, e dla testu -T trzeba
               odczyta plik, w wikszoci przypadkow uywa si najpierw -f, jak w
               next unless -f $file && -T $file.

               Jeli ktory z operatorow testu plikow (lub stat() czy lstat())
               otrzymalby specjalny uchwyt pliku, skladajcy si z samego
               podkrelenia, to uyta zostalaby struktura `stat' z poprzedniego
               testu pliku, oszczdzajc wywolania systemowego. (Nie dziala to
               dla -t, a ponadto powiniene pamita, e lstat() i -l zostawiaj w
               strukturze wartoci dla dowiza symbolicznych, a nie
               rzeczywistych plikow.) Przyklad:

                   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 modul argumentu.  Jeli parametr WARTO zostanie pominity,
               to uywane jest $_.

       accept NOWEGNIAZDO,GNIAZDO
               Przyjmuje nadchodzce polczenie na gniedzie, podobnie jak
               wywolanie systemowe accept(2). Po sukcesie zwraca spakowany
               adres, a w razie poraki FALSE. Przyklad uycia mona znale w
               sekcji Sockets: Client/Server Communication strony podrcznika
               perlipc(1).

       alarm SEKUNDY

       alarm   Powoduje, e sygnal ALARM jest dostarczany do tego procesu po
               okrelonej liczbie sekund. Jeli nie podano parametru sekund,
               uywana jest warto zachowana w $_. (Niestety na niektorych
               maszynach czas moe by do sekundy krotszy ni ten, ktory podasz,
               zalenie od sposobu zliczania sekund.) Naraz odlicza moe tylko
               jeden zegar. Kade wywolanie wylcza poprzedni zegar, a argument
               0 wylcza poprzedni zegar bez uruchamiania nowego. Zwrocona
               warto jest iloci czasu, pozostajcego poprzedniemu zegarowi.

               Dla oponie lub wikszej dokladnoci ni jedna sekunda, moesz uy
               perlowego interfejsu syscall(), i dosta si do setitimer(2), o
               ile twoj system to obsluguje. W przeciwnym wypadku obejrzyj
               opis select(), gdzie w tym dokumencie. Ogolnie czstym bldem
               jest lczenie wywola alarm() i sleep().

               Jeli chcesz uywa alarm() do timeout'owania wywolania
               systemowego, musisz uy pary eval/die. Nie mona oczekiwa, e
               alarm spowoduje, e wywolanie systemowe si zakoczy, z $!
               ustawionym na EINTR, gdy na niektorych systemach perl ustawia
               obslug sygnalow tak, e wywolania systemowe s restartowane.
               Uywanie eval/die dziala 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 bldy
                   if ($@) {
                       # timeout
                   }
                   else {
                       # bez timeouta
                   }

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

               Dla operacji tangens, moesz uy funkcji POSIX::tan(), lub uy
               znanej relacji:

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

       bind GNIAZDO,NAZWA
               Przywizuje adres sieciowy do gniazda, podobnie jak wywolanie
               systemowe bind(2). Po sukcesie zwraca TRUE, a w przeciwnym
               wypadku FALSE. NAZWA powinna by spakowanym adresem, typu
               odpowiedniego dla gniazda. Zobacz przyklady w sekcji Sockets:
               Client/Server Communication na stronie podrcznika perlipc(1).

       binmode UCHWYTYPLIKU
               Powoduje, e plik przelcza si w tryb binarny zapisu/odczytu. Ma
               to miejsce w systemach operacyjnych, ktore dokonuj takiego
               rozronienia. Pliki, ktore nie s w trybie binarnym, ukrywaj
               wejciowe sekwencje CR LF pod LF, a sekwencje wyjciowe LF s
               tlumaczone na CR LF. Tryb binarny nie wplywa na nic pod Unixem;
               jednak pod MS-DOS i innymi archaicznymi systemami, moe to by
               niezbdna wlaciwo--w przeciwnym wypadku twoja biblioteka C moe
               znieksztalci plik.  Kluczem do rozroniania systemow, ktore
               potrzebuj trybu binarnego od tych, ktore 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.
               Jeli UCHWYTPLIKU jest wyraeniem, to warto brana jest jako nazwa
               uchwytu pliku.

       bless REF,NAZWAKLASY

       bless REF
               Funkcja ta mowi rzeczy, wskazywanej przez referencj REF, e jest
               teraz obiektem w pakiecie NAZWAKLASY--lub w biecym pakiecie,
               jeli nie podano parametru nazwy klasy. Funkcja zwraca dla
               pewnoci referencj, gdy jest ona czsto ostatni rzecz w
               konstruktorze. Jeli blogoslawiona funkcja ma by dziedziczona w
               klasach potomnych, to zawsze uywaj wersji dwuargumentowej tej
               funkcji. Dla dalszych informacji o blogoslawieniu obiektow
               zobacz stron perlobj(1).

       caller WYRA

       caller  Zwraca kontekst biecego wywolania podprocedury. W kontekcie
               skalarnym, jeli bylo wywolanie, tj. jeli jestemy w
               podprocedurze lub eval() lub require(), zwraca nazw pakietu
               wywolujcego, a w przeciwnym razie warto niezdefiniowan. W
               kontekcie listowym, zwraca

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

               Z parametrem WYRA zwraca troch dodatkowych danych, z ktorych
               korzysta debugger do drukowania ladu stosu. Warto WYRA
               wskazuje, o ile ramek wywola naley si cofn od biecej.

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

               $podprocedura tutaj moe by "(eval)", jeli ramka nie jest
               wywolaniem podproceduralnym. W tej sytuacji ustawiane s
               dodatkowe elementy, $teksteval i $jest_require: $jest_require
               jest prawdziwe, jeli ramka zostala 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 kada
               instrukcja use tworzy ramk require. (wewntrz ramki eval WYRA)

               Co wicej, po wywolaniu z pakietu DB, caller zwraca jeszcze
               dokladniejsze dane: ustawia zmienn listow @DB::args na
               argumenty, z ktorymi wywolano podprocedur.

       chdir WYRA
               Zmienia katalog roboczy na WYRA. Jeli WYRA jest pominite, to
               zmienia katalog na katalog domowy. Po sukcesie zwraca TRUE, a w
               przeciwnym wypadku FALSE. Zobacz przyklad przy opisie die().

       chmod LISTA
               Zmienia prawa listy plikow. Pierwszy element listy musi by
               numerycznym zapisem praw, ktory powinien by liczb osemkow, a
               ktory z pewnoci nie powinien by lacuchem cyfr osemkowych: 0644
               jest ok, ale '0644' nie jest.  Zwraca liczb plikow, ktorych
               prawa zmieniono. Jeli wszystkim co masz jest lacuch, zobacz te
               wpis oct, znajdujcy 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 zakoczenia
               linii, ktore odpowiadaj biecej wartoci $/ (znanego te jako
               $INPUT_RECORD_SEPARATOR w module English).  Zwraca calkowit
               liczb znakow, usunitych ze wszystkich argumentow. Czsto jest
               uywany do usuwania nowych linii z koca rekordu wejciowego jeli
               obawiasz si, e rekordowi moe jej brakowa. W trybie `paragraph'
               ($/ = ""), usuwa wszystkie koczce znaki nowych linii z
               lacuchow.  Jeli pominita zostanie ZMIENNA, to ucinane jest $_.
               Przyklad:

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

               Moesz w zasadzie uci wszystko co jest lwartoci, wlczajc
               przypisanie:

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

               Jeli ucinasz list, obcinany jest kady element, a zwracana jest
               lista usunitych znakow.

       chop ZMIENNA

       chop LISTA

       chop    Odrywa ostatni znak lacucha i zwraca jego warto. Jest przede
               wszystkim uywany do usuwania nowej linii z koca rekordu
               wejciowego, lecz jest duo bardziej efektywny ni s/\n//, poniewa
               ani nie skanuje, ani nie kopiuje lacucha. Jeli pominito ZMIENN,
               odrywa $_.  Przyklad:

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

               Moesz w zasadzie oderwa cokolwiek, co jest lwartoci, wlczajc
               przypisanie:

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

               Jeli obrywasz list, obrywany jest kady element. Zwracana jest
               tylko warto ostatniego oderwania.

               Zauwa, e chop zwraca ostatni znak. Aby zwroci wszystkie poza
               ostatnim, uyj substr($lancuch, 0, -1).

       chown LISTA
               Zmienia wlaciciela (i grup) listy plikow. Pierwsze dwa
               argumenty listy musz by NUMERYCZNYMI uid i gid, podanym w tej
               kolejnoci.  Zwraca liczb plikow, na ktorych powiodla si
               zamiana.

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

               Oto przyklad, ktory podglda nienumeryczne uid'y w pliku z
               haslami:

                   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 plikow
                   chown $uid, $gid, @ary;

               Na wikszoci systemow nie moesz zmienia wlacicielstwa, chyba e
               jeste superuytkownikiem, cho powiniene by w stanie zmienia grup
               na dowoln z twoich drugorzdnych grup. Na niezabezpieczonych
               systemach ograniczenia te mog by mniejsze, lecz nie jest to
               przenone zaloenie.

       chr LICZBA

       chr     Zwraca znak, reprezentowany przez LICZB w zbiorze znakow.  Na
               przyklad, chr(65) to "A" w ASCII.  Dla odwrocenia tego
               dzialania, uyj ord, ktore jest opisane gdzie indziej w tym
               dokumencie.

               Jeli pominito LICZB, to uywane jest $_.

       chroot NAZWAPLIKU

       chroot  Funkcja ta dziala tak samo jak wywolanie systemowe chroot(2):
               powoduje, e podany katalog staje si nowym katalogiem glownym
               dla wszelkich nowych cieek, ktore bd si zaczynaly od "/". Tyczy
               si to twojego procesu i jego dzieci. Ze wzgldow bezpieczestwa,
               wywolanie to jest zastrzeone dla superuytkownika. Jeli pominito
               NAZWPLIKU, to uywany jest $_.

       close UCHWYTPLIKU
               Zamyka plik lub potok zwizany z uchwytem, zwracajc TRUE jedynie
               w wypadku, gdy stdio da rad oproni wszystkie bufory i zamkn
               systemowy deskryptor pliku. Jeli uchwyt pliku pochodzil od
               otwartego potoku, funkcja zwroci FALSE jeli ktore z potrzebnych
               wywola systemowych zawiedzie lub jeli program zakoczy prac z
               niezerowym statusem. (Jeli problemem jest fakt, e program
               skoczyl si z niezerowym kodem, to $!  bdzie ustawione na 0.)
               Nie musisz zamyka UCHWYTUPLIKU, jeli chcesz go zaraz potem
               wykorzysta do innego otwarcia open(), poniewa funkcja open()
               zamknie go za ciebie. Jednak jawne zamknicie pliku wejciowego
               resetuje licznik linii ($.), podczas gdy niejawne zamknicie w
               open() tego nie robi. Poza tym, zamykanie potoku powoduje
               oczekiwanie na zakoczenie procesu z potoku, na wypadek gdyby
               chcial poniej obejrze wyjcie potoku. Jawne zamykanie potoku
               wstawia warto statusu komendy do $?.  Przyklad:

                   open(OUTPUT, '|sort >foo'); # potok do `sort'
                   ...                         # drukuj rone rzeczy na wyjcie
                   close OUTPUT;               # czekaj na zakoczenie `sort'
                   open(INPUT, 'foo');         # pobierz wyniki sortowania

               UCHWYTPLIKU moe by wyraeniem, ktorego warto daje rzeczywist
               nazw uchwytu pliku.

       closedir UCHWYTKATALOGU
               Zamyka katalog, otworzony funkcj opendir().

       connect GNIAZDO,NAZWA
               Probuje polczy si ze zdalnym gniazdem, zupelnie tak jak
               wywolanie systemowe connect(2). Po sukcesie zwraca TRUE, a w
               przeciwnym wypadku FALSE. NAZWA powinna by spakowanym typem
               adresu, odpowiednim dla gniazda. Zobacz przyklady w sekcji
               Sockets: Client/Server Communication na stronie podrcznika
               perlipc(1).

       continue BLOK
               W rzeczywistoci jest to instrukcja kontroli wykonywania
               programu, a nie funkcja. Jeli do BLOKU dolczone jest continue
               BLOK (zazwyczaj we while lub foreach), to jest zawsze
               wykonywany tu przed kolejnym wykonaniem warunku, zupelnie jak
               trzecia cz ptli for w C. Tak wic moe by uywane do zwikszania
               zmiennej ptli, nawet gdy ptla byla kontynuowana z pomoc
               instrukcji next (ktora jest podobna do instrukcji continue z
               C).

       cos WYRA
               Zwraca cosinus z WYRA (wyraonego w radianach). Jeli pominie si
               argument WYRA, to uywany jest $_.

               Dla operacji arcus cosinus, moesz uy funkcji POSIX::acos(), lub
               nastpujcej relacji:

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

       crypt CZYSTYTEKST,SALT
               Koduje lacuch na wzor funkcji crypt(3) z biblioteki C. Moe to
               by uyteczne np. do sprawdzania plikow z haslami w poszukiwaniu
               slabych hasel.  Robi to powinni tylko ludzie noszcy biale
               kapelusze.

               Zauwa, e crypt jest funkcj jednokierunkow, podobnie jak
               rozbijanie jajek na omlet. Nie istnieje (znana) funkcja
               dekodujca. W wyniku, funkcja wcale nie jest tak uyteczna do
               kryptografii. (Dla tego, zobacz najbliszy mirror CPAN.)

               Oto przyklad, ktory daje pewno, e ktokolwiek uruchomi ten
               program, zna swoje wlasne haslo:

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

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

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

               Oczywicie wpisywanie swojego hasla za kadym razem, gdy kto o
               nie poprosi jest niemdre.

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

               Przerywa powizanie midzy plikiem DBM a tablic asocjacyjn.

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

               Lczy to plik dbm(3), ndbm(3), sdbm(3), gdbm(), lub Berkeley DB
               z tablic asocjacyjn. HASH jest nazw tablicy asocjacyjnej. (w
               przeciwiestwie do normalnego otwierania, pierwszy argument NIE
               jest uchwytem pliku, cho wyglda podobnie). NAZWADB jest nazw
               bazy danych (bez rozszerze w rodzaju .dir czy .pag).  Jeli baza
               nie istnieje, to jest tworzona z prawami okrelanymi przez PRAWA
               (zmodyfikowanymi przez umask()). Jeli twoj system obsluguje
               tylko starsze funkcje DBM, to moesz w swoim programie wykona
               tylko jeden dbmopen(). W starszych wersjach perla, jeli system
               nie mial ani DBM, ani  ndbm, wywolanie dbmopen powodowalo bld
               krytyczny; teraz schodzi do sdbm(3).

               Jeli nie masz prawa zapisu do pliku DBM, to moesz tylko
               odczytywa zmienne asocjacyjne, nie moesz ich ustawia. Jeli
               chcesz sprobowa, czy moesz zapisywa, uyj albo testow plikowych,
               albo sprobuj ustawi probny wpis asocjacyjny wewntrz eval(), co
               przechwyci bld.

               Zauwa, e funkcje takie, jak keys() i values() mog zwraca w
               uyciu z plikami DBM wielkie tablice. Moesz do iteracji przez
               wielkie pliki DBM uywa take each(). Przyklad:

                   # 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 podrcznika AnyDBM_File -- jest tam bardziej
               ogolny opis wad i zalet ronych podej dbm. Zobacz te stron
               DB_File, dla bogatej implementacji.

       defined WYRA

       defined Zwraca warto logiczn, mowic czy WYRA ma warto inn od
               niezdefiniowanej undef. Jeli WYRA nie jest obecne, to testowane
               jest $_.

               Wiele operacji zwraca undef aby wskaza bld, koniec pliku, bld
               systemowy, niezainicjalizowan zmienn i inne wyjtki. Funkcja ta
               pozwala odroni undef od innych wartoci. (Prosty test logiczny
               nie rozroni undef, zero, pustego lacucha, i "0", ktore
               wszystkie s jednakowo falszywe.)  Zauwa, e poniewa undef jest
               prawidlowym skalarem, to jego obecno niekoniecznie musi
               wskazywa warunek wyjtkowy: pop() zwraca undef gdy jego argument
               jest pust tablic, lub gdy zwracany element jest wartoci Wundef.

               defined() mona uywa te do sprawdzania czy podprocedura
               wychodzi. Z drugiej strony, uywanie defined() na agregatach
               (tablicach asocjacyjnych i tablicach) nie musi zwroci zgodnych
               z intuicj wynikow i powinno si go w tych przypadkach unika.

               Gdy uywane na elemencie tablicy asocjacyjnej, mowi czy warto
               jest zdefiniowana, a nie czy taki klucz istnieje w tablicy. Dla
               tego celu, uyj exists, ktore jest opisane gdzie indziej w tym
               dokumencie.

               Przyklady:

                   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 naduywa defined(), a potem s oni zaskoczeni,
               e liczba 0 i "" (lacuch o dlugoci zero) s w rzeczywistoci
               wartociami zdefiniowanymi. Na przyklad, jeli powiesz

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

               to porownanie wzorca si powiedzie i $1 bdzie zdefiniowane,
               niezalenie od tego, e trafilo w "nic". W rzeczywistoci nie mona
               powiedzie, e trafilo w "nic". Raczej trafilo w co, o dlugoci
               zera znakow. Jest to wszystko bardzo czyste i uczciwe. Gdy
               funkcja zwraca warto niezdefiniowan, jest to przyznanie si, e
               nie mogla da uczciwej odpowiedzi. Tak wic powiniene uywa
               defined() tylko jeli sprawdzasz dzialanie tego, co probujesz
               osign. W niektorych wypadkach, rzecz, ktorej oczekujesz jest
               proste porownanie z 0 lub "".

               Obecnie uywanie defined() na calej tablicy lub tablicy
               asocjacyjnej, zglasza tylko czy zostala dla niego zaalokowana
               pami. Tak wic tablica, ktor ustawiasz na pust list jest
               pocztkowo niezdefiniowana, a gdy si zapelni, staje si
               zdefiniowana. Zamiast tego powiniene uy prostego testu
               rozmiaru:

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

               Uycie na nich undef() powoduje wyczyszczenie ich pamici i
               zgloszenie, e nie s ju zdefiniowane. Nie powinno si jednak tego
               robi, chyba e nie masz zamiaru ich wicej uywa, poniewa po
               prostu szybciej jest uywa pamici gotowej do wypelnienia, ni
               alokowa j od nowa.

               Zachowanie defined() na agregatach moe zosta zmienione,
               poprawione, lub zepsute w nastpnych wersjach perla.

               Zobacz te opisy undef, exists,  i ref, znajdujce si w innych
               miejscach tego dokumentu.

       delete WYRA
               Kasuje podany klucz(e) i zwizane z nim wartoci z tablicy
               asocjacyjnej. Dla kadego klucza, zwracana jest skasowana warto
               zwizana z kluczem albo warto niezdefiniowana, jeli taki klucz
               nie istnial. Kasowanie z $ENV{} modyfikuje rodowisko. Kasowanie
               z tablicy asocjacyjnej, podlczonej do pliku DBM, kasuje wpis z
               pliku. (lecz kasowanie z takiego pliku nie musi zwraca
               niczego.)

               Nastpujcy przyklad kasuje wszystkie wartoci tablicy
               asocjacyjnej:

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

               Podobnie robi nastpujce:

                   delete @HASH{keys %HASH}

               (Ale obydwa s wolniejsze ni komenda undef().)  Zauwa, e WYRA
               moe by arbitralnie skomplikowany tak dlugo, dopoki kocowa
               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 obrbem eval() drukuje warto LISTY na STDERR i koczy prac z
               biec wartoci $! (errno). Jeli $!  wynosi 0, to koczy z wartoci
               ($? >> 8) (status poprzedniej `komendy`).  Jeli ($? >> 8) jest
               zerem, to koczy z wartoci 255.  Wewntrz eval, komunikat o
               bldzie jest pakowany do $@, a eval() jest przerywany wartoci
               niezdefiniowan; powoduje to, e die() moe podnie wyjtek.

               Rownowane przyklady:

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

               Jeli warto WYRA nie koczy si now lini, drukowany jest rownie
               numer biecej linii skryptu i wejcia, a za nimi doklejana jest
               nowa linia.  Wskazowka: Czasami dodanie ", stopped" do twojego
               komunikatu moe nada mu wicej sensu po doklejeniu lacucha "at
               foo line 123".  Zalomy, 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 take exit() i warn().

               Mona zaaranowa spraw tak, e callback bdzie wywolywany tu przed
               uczynieniem swojej powinnoci przez die(). Naley w tym celu
               ustawi hak $SIG{__DIE__}.  Zwizany handler zostanie wywolany z
               tekstem bldu i moe zmieni tre komunikatu bldu, wywolujc die()
               ponownie.  Zobacz stron perlvar(1), dla dalszych detali o
               ustawianiu wpisow %SIG, a take opis eval() dla paru przykladow.

       do BLOK Nie jest to funkcja. Zwraca warto ostatniej komendy w sekwencji
               komend, wskazywanych przez BLOK. Po zmodyfikowaniu przez
               modyfikator ptli, wywoluje jednokrotnie BLOK przed sprawdzeniem
               warunku ptli. (W innych instrukcjach modyfikatory ptli
               sprawdzaj warunek na samym pocztku.)

       do PODPROCEDURA(LISTA)
               Niezalecana forma wywolania podprocedury. Zobacz stron
               perlsub(1).

       do WYRA Uywa wartoci WYRA jako nazwy pliku i wykonuje zawarto tego
               pliku jako skrypt perla. Podstawowym zadaniem tej instrukcji
               jest wlczanie podprocedur z bibliotek perla.

                   do 'stat.pl';

               jest zupelnie jak

                   eval `cat stat.pl`;

               tylko troch bardziej efektywne, utrzymuje ledzenie biecej nazwy
               plikow dla komunikatow o bldach i przeszukuje wszystkie
               katalogi -I, jeli plik nie znajduje si w katalogu biecym
               (zobacz take tablic @INC w sekcji Predefined Names podrcznika
               perlvar(1)).  Jednak jest takie samo w sensie, e przetwarza
               (parses) plik za kadym razem, gdy go wywolasz, wic
               przypuszczalnie nie chcialby tego wewntrz ptli.

               Zauwa, e wlczanie modulow bibliotecznych mona zalatwi lepiej z
               pomoc operatorow use() i require(), ktore rownie dokonuj
               sprawdzania bldow i powoduj wyjtki jeli jest jaki problem.

       dump ETYKIETA
               Powoduje to natychmiastowy zrzut core. Jest to po to, by mogl
               uy programu undump do konwertowania zrzutu core do pliku
               binarnego po zainicjalizowaniu wszystkich zmiennych z pocztku
               programu. Po uruchomieniu nowego binarium, rozpocznie si ono od
               wywolania goto ETYKIETA (ze wszystkimi ograniczeniami, na ktore
               cierpi goto).  Myl o tym, jak o goto z interweniujcym zrzutem
               core i reinkarnacj. Jeli ETYKIETA jest pominita, program
               restartuje si od pocztku. UWAGA: wszelkie pliki, ktore byly
               otwarte w momencie zrzutu core nie bd otwarte w nowej
               inkarnacji programu, powodujc przypuszczalnie zamieszanie w
               czci perla. Zobacz te opcj -u ze strony perlrun(1).

               Przyklad:

                   #!/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 wywolaniu w kontekcie listowym, zwraca dwuelementow tablic,
               skladajc si z klucza i wartoci nastpnego elementu
               asocjacyjnego, tak e moesz iterowa poprzez tablic. Po wywolaniu
               w kontekcie skalarnym, zwraca tylko klucz  dla nastpnego
               elementu asocjacyjnego. (Uwaga: Klucze mog mie warto "0" lub
               "", co jest logicznie nieprawidlowe; moesz w tym celu chcie
               zapobiec konstrukcjom jak while ($k = each %foo) {} .)

               Wpisy s zwracane w kolejnoci do losowej. Gdy tablica
               asocjacyjna jest calkowicie odczytana, w kontekcie listowym
               zwracana jest tablica null (co po przypisaniu daje warto FALSE
               (0)), a w kontekcie skalarnym zwracany jest undef.  Nastpne
               wywolanie each() po tym rozpocznie iterowanie od nowa.  Dla
               kadej tablicy asocjacyjnej istnieje pojedynczy iterator,
               dzielony przez funkcje each(), keys() i values(); moe by
               zresetowany przez odczytanie wszystkich elementow tablicy lub
               przez wywolanie keys HASH lub values HASH.  Jeli dodajesz, lub
               kasujesz elementy tablicy asocjacyjnej podczas jej iterowania,
               to moe si zdarzy, e niektore wpisy utracisz, a niektore
               dostaniesz zduplikowane.  Nie rob wic tego.

               Nastpujcy przyklad drukuje rodowisko, podobnie jak program
               printenv(1), lecz w odwrotnej kolejnoci:

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

               Zobacz te keys() i values().

       eof UCHWYTPLIKU

       eof ()

       eof     Zwraca 1, jeli nastpny odczyt z UCHWYTUPLIKU zwroci koniec
               pliku (eof) lub jeli UCHWYTPLIKU nie jest otwarty. UCHWYTPLIKU
               moe by wyraeniem, ktorego warto daje prawdziw nazw uchwytu
               pliku.  (Zauwa, e ta funkcja w rzeczywistoci odczytuje znak, a
               potem wstawia go z powrotem, wic nie jest zbyt uyteczna w
               kontekcie interaktywnym.)  Nie czytaj z pliku terminalowego
               (lub nie wolaj eof(UCHWYTPLIKU)) po osigniciu koca pliku. Pliki
               takie, jak terminale mog po takim zabiegu utraci warunek koca
               pliku.

               eof bez argumentow, uywa jako argumentu ostatniego odczytu
               pliku.  Puste nawiasy () mog wskazywa na pseudo plik, zloony z
               plikow, wymienionych w linii komend, np. eof() dobrze jest uywa
               wewntrz ptli while (<>), aby wykry koniec ostatniego pliku.
               Przyklady:

                   # resetuj numerowanie linii dla kadego pliku wejciowego
                   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;
                   }

               Wskazowka praktyczna: w perlu prawie nigdy nie trzeba uywa eof,
               poniewa operatory wejciowe zwracaj undef gdy nie bd mialy wicej
               danych.

       eval WYRA

       eval BLOK
               WYRA jest przetwarzany i wykonywany tak, jakby byl malekim
               programem perla. Jest wywolywany w kontekcie biecego programu
               perla, wic wszelkie ustawienia zmiennych lub definicje
               podprocedur i formatow zostaj dalej. Zwracana warto jest
               wartoci ostatniego wykonanego wyraenia, lub wartoci, przekazan
               przez return, czyli tak jak w podprocedurach. Ostatnie wyraenie
               jest wykonywane w kontekcie skalarnym, lub tablicowym, zalenie
               od kontekstu eval.

               Jeli pojawi si bld skladni lub bld czasu dzialania albo jeli
               wykonana zostanie instrukcja die(), to zwrocona zostanie warto
               niezdefiniowana, a $@ zostanie ustawione na komunikat o bldzie.
               Jeli nie bylo bldu, $@ bdzie lacuchem null.  Jeli WYRA zostanie
               pominite, to wykonywane jest $_.  Ostatni rednik, jeli taki
               istnieje, moe by pominity w wyraeniu. Ostrzegam jednak, e
               uywanie eval()  nie wycisza perla od drukowania ostrzee na
               STDERR, ani nie upycha tekstu tych komunikatow do $@.  Aby
               zrobi ktor z tych rzeczy, musisz uy zabudowania $SIG{__WARN__}.
               Zobacz warn() i stron perlvar(1).

               Zauwa, e poniewa eval() przechwytuje krytyczne (w innych
               wypadkach) bldy, to jest przydatny dla okrelania czy konkretna
               wlaciwo (taka, jak np. socket(), symlink(), itp. jest
               zaimplementowana. Jest to rownie mechanizm perla obslugiwania
               wyjtkow, gdzie operator die jest mechanizmem ich podnoszenia.

               Jeli wykonywany kod si nie roni, moesz uy postaci eval-BLOK do
               wychwytywania bldow czasu dzialania, bez potrzeby rekompilacji
               za kadym razem. Bld, jeli si pojawi, jest wci zwracany w $@.
               Przyklady:

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

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

                   # bld czasu kompilacji
                   eval { $answer = };

                   # bld czasu dzialania
                   eval '$answer =';   # ustawia $@

               Uywajc postaci eval{} jako pulapki na wyjtki w bibliotekach,
               moesz nie yczy sobie uruchamiania hakow __DIE__, ktore mogl
               sobie ustawi uytkownik. Dla tego celu mona wykorzysta
               konstrukcj local $SIG{__DIE__}. Przyklad:

                   # bardzo prywatna pulapka na wyjtek dzielenia przez zero
                   eval { local $SIG{'__DIE__'}; $answer = $a / $b; }; warn $@ if $@;

               Jest to szczegolnie istotne, gdy haki __DIE__ mog wywolywa
               die() ponownie, co ma efekt zmieniania komunikatow o bldach:

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

               Uywajc eval(), powiniene szczegolnie uwaa, by pamita 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 oglupiajce cudzyslowy,
               powodujce, e czytelnik zastanawia si, co jeszcze moe si zdarzy
               (nic nie moe).)  Przypadki 3 i 4 zachowuj si podobnie: wykonuj
               one kod '$x', ktory nie robi nic poza zwroceniem wartoci $x.
               (Przypadek 4 jest preferowany ze wzgldow estetycznych, ma te
               zalet kompilowania podczas kompilacji, a nie podczas
               dzialania.) Przypadek 5 jest miejscem, gdzie normalnie chcialby
               uy cudzyslowow, poza tym, e w tej konkretnej sytuacji mona uy
               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 bezporednio,
               zamiast przez /bin/sh -c (patrz niej).  Jeli chcesz powroci,
               uyj zamiast exec() instrukcji system().

               Jeli w LICIE jest wicej ni jeden argument, lub jeli jest to
               tablica z wicej ni jedn wartoci, wywolywany jest execvp(3) (z
               argumentami z LISTY).  Jeli jest tylko jeden argument skalarny,
               to jest on sprawdzany w poszukiwaniu metaznakow powloki.  Jeli
               s tam jakie znaki, to caly argument jest przekazywany do
               przetworzenia przez /bin/sh -c.  Jeli nie ma adnych metaznakow,
               to argument jest dzielony na slowa i przekazywany bezporednio
               do execvp(3), co jest bardziej efektywne.  Uwaga: exec() i
               system() nie oproniaj twojego bufora wejciowego, wic moliwe, e
               aby zapobiec utracie wyjcia, bdziesz musial ustawi $|.
               Przyklady:

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

               Jeli tak naprawd nie potrzebujesz wywola pierwszego argumentu,
               lecz chcesz oszuka program, ktory wykonujesz co do jego nazwy,
               to moesz poda program, ktory chcesz wywola jako "obiekt
               niebezporedni" (bez przecinka) na samym pocztku LISTY. (Wymusza
               to zawsze interpretacj LISTY jako listy wielowartociowej, nawet
               jeli jest tam tylko pojedynczy skalar.) Przyklad:

                   $shell = '/bin/csh';
                   exec $shell '-sh';          # udaj, e to powloka loginowa

               lub, bardziej bezporednio,

                   exec {'/bin/csh'} '-sh';    # udaj, e to powloka loginowy

       exists WYRA
               Zwraca TRUE, jeli podany klucz asocjacyjny istnieje w tablicy
               asocjacyjnej. Warto jest prawdziwa nawet gdy odpowiadajca
               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 moe by prawdziwy tylko wtedy, gdy jest
               zdefiniowany, a zdefiniowany jeli istnieje, lecz odwrotna
               kolejno niekoniecznie jest prawdziwa.

               Zauwa, e WYRA moe by skomplikowany tak daleko, dopoki
               ostateczna operacja jest podejrzeniem klucza asocjacyjnego:

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

       exit WYRA
               Wykonuje WYRA i koczy prac z t wartoci. (W rzeczywistoci,
               wywoluje najpierw zdefiniowane procedury END, lecz procedury te
               mog przerwa koczenie. Podobnie, rownie przed wyjciem wolane s
               wszelkie destruktory obiektow.) Przyklad:

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

               Zobacz te die(). Jeli WYRA jest pominite, to praca koczy si
               statusem 0. Jedynymi, uniwersalnymi i przenonymi wartociami
               WYRA s 0 dla sukcesu i 1 dla bldu; wszelkie inne s podstaw do
               dziwnych interpretacji, zalenych od rodowiska, w ktorym program
               jest uruchomiony.

               Nie powiniene uywa exit() do przerywania podprocedury, jeli
               istnieje szansa, e kto moglby chcie ustawi pulapk na bld.
               Zamiast tego uyj die(), ktory moe by przechwycony przez eval().

       exp WYRA

       exp     Zwraca e (naturalna podstawa logarytmu) do potgi WYRA. Jeli
               WYRA jest pominite, zwraca exp($_).

       fcntl UCHWYTPLIKU,FUNKCJA,SKALAR
               Implementuje funkcj fcntl(2). Przypuszczalnie bdziesz musial
               zaznaczy

                   use Fcntl;

               aby moc si ni poslugiwa. Przetwarzanie argumentow i zwracanie
               wartoci dziala zupelnie jak w ioctl(), opisanym niej. Zauwa, e
               fcntl() da bld krytyczny po uyciu na maszynie, nie
               implementujcej fcntl(2). Na przyklad:

                   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(). Jeli UCHWYTPLIKU jest
               wyraeniem, to jego warto brana jest za nazw uchwytu pliku.

       flock UCHWYTPLIKU,OPERACJA
               Wywoluje flock(2), lub emuluje go dla uchwytu UCHWYTPLIKU.
               Zwraca TRUE po sukcesie, FALSE w wypadku jakiego problemu. Na
               maszynach nie implementujcych blokowania flock(2), fcntl(2),
               lub lockf(3), powoduje bld krytyczny.  flock() jest przenonym
               perlowym interfejsem blokowania plikow, cho blokuje tylko cale
               pliki, a nie rekordy.

               OPERACJA jest jedn z LOCK_SH, LOCK_EX, lub LOCK_UN. Moliwa jest
               jeszcze kombinacja z LOCK_NB. Stale te maj tradycyjne wartoci
               1, 2, 8 i 4, lecz moesz uywa nazw symbolicznych po
               zaimportowaniu ich z modulu Fcntl, robic to albo pojedynczo,
               albo grupowo, uywajc tagu ':flock' .  LOCK_SH da blokady
               dzielonej, LOCK_EX da blokady na wylczno, a LOCK_UN zwalnia
               poprzednio zadan blokad. Jeli do LOCK_SH lub LOCK_EX dodany
               zostanie LOCK_NB, to flock nie bdzie blokowal, oczekujc na
               zablokowanie, lecz zakoczy dzialanie natychmiast (aby dowiedzie
               si, czy uzyskale blokad, sprawd status wyjcia).

               Aby zapobiec prawdopodobnie dekoordynacji, perl opronia
               UCHWYTPLIKU przed jego (od)blokowaniem.

               Zauwa, e emulacja zbudowana za pomoc lockf(3) nie daje blokad
               dzielonych i wymaga, by UCHWYTPLIKU byl otwarty z zamiarem
               zapisu.  Jest to semantyka, ktor implementuje lockf(3).  Wikszo
               (wszystkie?) systemow jednak implementuje lockf(3) na zasadach
               blokowania fcntl(2), wicej ronice nie powinny si dawa we znaki.

               Zauwa te, e niektore wersje flock() nie mog blokowa rzeczy
               poprzez sie; bdziesz musial uy  do tego bardziej specyficznego
               dla systemu fcntl(). Jeli chcesz, moesz zmusi perla do
               ignorowania systemowej funkcji flock(2) i uywa jego wlasnej,
               opartej o fcntl(2) emulacji. Robi si to, podajc programowi
               Configure przelcznik -Ud_flock. Trzeba to oczywicie zrobi
               podczas konfigurowania perla jako takiego.

               Oto doklejacz mailboxa dla systemow BSD.

                   use Fcntl ':flock'; # importuj stale LOCK_*

                   sub lock {
                       flock(MBOX,LOCK_EX);
                       # a w wypadku, gdyby kto dokleil
                       # 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 podrcznika. S tam inne przyklady  flock().

       fork    Wykonuje wywolanie systemowe fork(2). Zwraca procesowi
               rodzicielskiemu pid dziecka, a w wtku dziecka zwraca zero. W
               wypadku bldu, zwraca undef.  Uwaga: nieopronione bufory
               pozostaj nieopronione w obydwu procesach, co znaczy, e bdziesz
               musial ustawi $| ($AUTOFLUSH w English) lub wywola metod
               autoflush() z IO::Handle aby zapobiec duplikacji wyjcia.

               Jeli fork()'ujesz bez czekania na dzieci, zbierzesz zombies.
               (Osierocone procesy.)

                   $SIG{CHLD} = sub { wait };

               Istnieje te trik podwojnego forka (sprawdzanie bldow forka
               zostalo pominite);

                   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 podrcznika perlipc(1). S tam dalsze przyklady
               forkowania i zbierania konajcych dzieci.

               Zauwa, e jeli twoje forkowane dziecko dziedziczy systemowe
               deskryptory plikow, takie jak STDIN i STDOUT, ktore w
               rzeczywistoci s polczone potokiem lub gniazdem, to jeli
               skoczysz dzialanie, zdalny serwer (taki jak httpd, rsh) nie
               bdzie mylal, e rzeczywicie skoczyle.  Powiniene je otworzy na
               nowo na /dev/null.

       format  Zadeklaruj format obrazka, uywanego z funkcj write(). Na
               przyklad:

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

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

               Dla dalszych opisow i przykladow, zobacz stron perlform(1).

       formline OBRAZEK,LISTA
               Jest to funkcja wewntrzna, uywana przez formaty. Mona j jednak
               wywola te samodzielnie. Formatuje ona (zobacz stron
               perlform(1)) list wartoci zalenie od zawartoci OBRAZKA,
               umieszczajc wyjcie w akumulatorze wyjcia formatowego, $^A
               ($ACCUMULATOR w English).  Ostatecznie, po dokonaniu write(),
               zawarto $^A jest zapisywana do jakiego uchwytu pliku. Moesz
               jednak odczyta go samodzielnie i ustawi na "". Zauwa, e format
               zazwyczaj wykonuje jeden formline() na kad lini formy, lecz
               sama funkcja fromline nie zwraca uwagi na to, ile nowych linii
               jest osadzonych w OBRAZKU. Znaczy to, e tokeny ~ i ~~ bd
               traktowa caly OBRAZEK jako lini pojedyncz. Moesz wic by
               zmuszonym do uywania wielu linii form, aby zaimplementowa
               pojedynczy format zapisu, podobnie jak kompilator format.

               Uwaaj, jeli wstawiasz wokol obrazka podwojne cudzyslowy--znak
               "@" moe by wzity za pocztek nazwy tablicy.  formline() zawsze
               zwraca TRUE. Zobacz stron perlform(1) dla dalszych przykladow.

       getc UCHWYTPLIKU

       getc    Zwraca nastpny znak z pliku wejciowego, identyfikowanego przez
               UCHWYTPLIKU. Na kocu pliku zwraca lacuch null. Jeli UCHWYTPLIKU
               zostanie pominity, odczyt nastpuje ze STDIN.  Nie jest to
               efektywne. Nie moe by uywane do pobierania niebuforowanych
               pojedynczych znakow. Do tego celu sprobuj 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";

               Okrelenie, czy $BSD_STYLE powinno by ustawione, pozostawiamy
               jako wiczenie dla czytelnika.

               Na systemach, kompatybilnych z  POSIX, bardziej przenona do
               tego celu moe by funkcja POSIX::getattr().  Zobacz te modul
               Term::ReadKey z najbliszego mirrora CPAN; szczegoly o CPAN mona
               znale we wpisie CPAN ze strony podrcznika perlmod(1).

       getlogin
               Zwraca biecy login z /etc/utmp. (o ile istnieje.)  W wypadku
               nulla, uyj getpwuid().

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

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

       getpeername GNIZADO
               Zwraca spakowany adres sockaddr drugiego koca z polczenia na
               GNIEDZIE.

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

       getpgrp PID
               Zwraca biec grup procesu dla podanego PIDa. Aby uzyska grup
               biecego procesu, uyj wartoci PID rownej zero.  Uycie tej
               funkcji na maszynie, nie implementujcej getpgrp(2) podniesie
               wyjtek. Jeli parametr PID zostanie pominity, to zwracana jest
               grupa biecego procesu. Zauwa, e wersja POSIX getpgrp nie
               przyjmuje argumentu PID, wic naprawd przenona jest tylko
               konstrukcja PID==0.

       getppid Zwraca identyfikator procesu rodzicielskiego.

       getpriority CZYJE,KTO
               Zwraca biecy priorytet procesu, grupy procesow, lub uytkownika.
               (Zobacz stron podrcznika getpriority(2).)  Uycie tej funkcji na
               maszynie nie implementujcej getpriority(2) podniesie wyjtek
               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 kontekcie listowym, wartoci zwracane
               ronych funkcji `get' s nastpujce:

                   ($nazwa,$haslo,$uid,$gid,
                      $quota,$komentarz,$gcos,$katalog,$shell) = getpw*
                   ($nazwa,$haslo,$gid,$czlonkowie) = getgr*
                   ($nazwa,$aliasy,$typadresu,$dlugo,@addrs) = gethost*
                   ($nazwa,$aliasy,$typadresu,$sie) = getnet*
                   ($nazwa,$aliasy,$protokol) = getproto*
                   ($nazwa,$aliasy,$port,$protokol) = getserv*

               (Jeli wpis nie istnieje, dostaniesz list null.)

               W kontekcie skalarnym, dostajesz nazw. Wyjtkiem jest funkcja
               podgldania wedlug nazwy, gdzie dostajesz inn rzecz, jak by ona
               nie byla.  (Jeli wpis nie istnieje, otrzymujesz warto
               niezdefiniowan.)  Na przyklad:

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

               Warto $czlonkowie, zwracana przez getgr*() to oddzielona
               spacjami lista nazw loginowych czlonkow grupy.

               Jeli w C obslugiwana jest zmienna errno, to dla funkcji
               gethost*() jego warto bdzie przekazywana przez $?. Warto
               @addrs, zwracana przez wykonane wywolanie, jest list czystych
               (raw) adresow, zwroconych przez odpowiednie wywolanie
               systemowe. W domenie internetowej, kady adres jest
               czterobajtowy, a rozpakowa go moesz, mowic co w rodzaju:

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

       getsockname GNIAZDO
               Zwraca spakowany adres sockaddr tego koca polczenia na
               GNIEDZIE.

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

       getsockopt GNIAZDO,POZIOM,NAZWAOPCJI
               Zwraca zadan opcj gniazda, lub warto niezdefiniowan w wypadku
               bldu.

       glob WYRA

       glob    Zwraca warto WYRA z rozwiniciami nazwy plikow, takimi jakich
               dokonalaby powloka. Funkcja ta jest wewntrzn funkcj
               implementujc operator <*.c>, lecz moesz jej uy bezporednio.
               Jeli pominite zostanie WYRA, to uywane bdzie $_.  Operator
               <*.c> jest omowiony bliej w sekcji I/O Operators na stronie
               perlop(1).

       gmtime WYRA
               Konwertuje czas zwrocony przez funkcj time do 9 elementowej
               tablicy, w ktorej znajduje si czas zlokalizowany do
               standardowej strefy Greenwich.  Zazwyczaj jest to uywane
               nastpujco:

                   #  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.  Ogolnie znaczy to, e $mon ma zakres 0..11, a
               $wday 0..6, z niedziel kryjc si pod 0. Dodatkowo, $year jest
               liczb lat od 1900, a nie po prostu dwiema ostatnimi cyframi
               roku.

               Jeli WYRA jest pominite, wykonuje gmtime(time()).

               W kontekcie skalarnym, zwraca warto ctime(3):

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

               Zobacz te funkcj timegm(), udostpnian przez modul Time::Local,
               a take funkcj strftime(3), dostpn przez modul POSIX.

       goto ETYKIETA

       goto WYRA

       goto &NAZWA
               Posta goto-ETYKIETA szuka instrukcji, oznaczonej przez ETYKIETA
               i kontynuuje dzialanie od tamtego miejsca. Nie moe by uywane do
               przechodzenia do konstrukcji, wymagajcej inicjalizacji, takiej
               jak podprocedura czy ptla foreach. Nie moe te by uywane do
               przechodzenia do konstrukcji optymalizowanej, lub do
               wychodzenia z bloku, lub podprocedury, przekazanej do sort().
               Mona nim natomiast przeskoczy prawie we wszystkie inne miejsca
               zakresu dynamicznego, wlczajc wychodzenie z podprocedur, cho w
               tym wypadku lepiej uy innej konstrukcji, takiej jak last lub
               die. Autor perla nigdy nie czul potrzeby uywania tej postaci
               goto (tzn. w perlu--C jest inn spraw).

               Posta goto-WYRA oczekuje nazwy etykiety, ktorej zakres moe by
               rozwizany dynamicznie. Pozwala to na obliczane goto per
               FORTRAN, lecz nie jest zbyt zalecane, jeli optymalizujesz ze
               wzgldu na latwo konserwacji programu:

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

               Posta goto-&NAZWA jest bardzo magiczna i podmienia wywolanie do
               nazwanej podprocedury dla biecej procedury. Jest to uywane
               przez podprocedury AUTOLOAD, ktore chc ladowa inne
               podprocedury, a potem udawa, e ta inna podprocedura zostala
               wywolana jako pierwsza (poza tym, wszelkie zmiany @_ biecej
               podprocedury s przekazywane innej podprocedurze.) Po tym goto,
               nawet caller() nie bdzie w stanie powiedzie, e ta procedura
               byla wywolana pierwsza.

       grep BLOK LISTA

       grep WYRA,LISTA
               Jest to podobne duchowo, lecz nie identyczne do grep(1) i
               krewnych.  W rzeczywistoci, nie jest ograniczone do uywania
               wyrae regularnych.

               Wykonuje BLOK lub WYRA dla kadego elementu LISTY (ustawiajc
               lokalnie $_ na kady element) i zwracajc list wartoci,
               skladajcych si z tych, dla ktorych wykonane wyraenie bylo
               prawdziwe. W kontekcie skalarnym, zwraca liczb prawdziwych
               wyrae.

                   @foo = grep(!/^#/, @bar);    # Pozbd si komentarzy

               lub rownowanie,

                   @foo = grep {!/^#/} @bar;    # pozbd si komentarzy

               Zauwa, e skoro $_ jest referencj do wartoci listy, moe by
               uywane do modyfikowania elementow tablicy. Podczas gdy jest to
               przydatne i obslugiwane, moe to spowodowa te nieoczekiwane
               rezultaty, szczegolnie w wypadku gdy LISTA nie jest nazwan
               tablic.

               Grep zwraca aliasy do oryginalnej listy. Znaczy to, e
               modyfikowanie elementu listy zwroconej przez to polecenie,
               modyfikuje te element listy oryginalnej.

       hex WYRA

       hex     Interpretuje WYRA jako lacuch szesnastkowy i zwraca odpowiadajc
               mu warto. (Dla konwersji lacuchow, ktore mog si zaczyna od 0,
               lub 0x, zobacz opis oct, znajdujcy si gdzie w tym dokumencie.)
               Jeli WYRA zostanie pominite, to uywane 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 moduly, ktore
               ycz sobie eksportowa nazwy do kolejnych modulow. [potem]
               funkcja use() wola metod import() dla uywanego 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 lacuchu STR.
               Jeli POZYCJA jest pominita, to przeszukiwanie rozpoczyna si od
               pocztku lacucha. Warto zwracana jest oparta o 0 (lub tego, na
               co ustawisz zmienn $[ --lecz lepiej tego nie rob). Jeli podcig
               nie moe zosta zlokalizowany, zwracana jest podstawa - 1, czyli
               normalnie -1.

       int WYRA

       int     Zwraca cz calkowit z WYRA. Jeli WYRA jest pominite, uywane jest
               $_.

       ioctl UCHWYTPLIKU,FUNKCJA,SKALAR
               Implementuje funkcj ioctl(2). Przypuszczalnie aby jej uywa,
               bdziesz musial powiedzie

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

               Jeli ioctl.ph nie istnieje, lub nie ma wlaciwych definicji,
               bdziesz musial uy swojej wlasnej, opartej na naglowkach C,
               takich jak <sys/ioctl.h>.  (Istnieje skrypt perla o nazwie
               h2ph(1), ktora pomaga w konwersji, lecz jest to nietrywialna
               sprawa.) SKALAR jest wartoci zapisywan, lub odczytywan, zalenie
               od FUNKCJI--wskanik do wartoci lacuchowej SKALARA bdzie
               przekazany jako trzeci argument wlaciwego wywolania ioctl.
               (Jeli SKALAR nie ma wartoci lacuchowej, lecz ma numeryczn, to
               zostanie przekazana ta warto zamiast wskanika do lacucha.  Aby
               zapewni, e bdzie to prawdziwe, przed uyciem dodaj do skalara
               0). Do manipulowania na wartociach struktur, uywanych przez
               ioctl() przydatne s funkcje pack() i unpack().  Nastpujcy
               przyklad 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 nastpujca:

                       gdy OS zwraca:          to Perl zwraca:
                           -1               warto niezdefiniowan
                            0                lacuch "0 but true"
                        co innego                 to samo

               Tak wic, mimo e perl zwraca po sukcesie TRUE, a w wypadku
               niepowodzenia FALSE, moesz latwo okreli rzeczywist warto
               zwrocon przez system operacyjny:

                   ($retval = ioctl(...)) || ($retval = -1);
                   printf "System zwrocil %d\n", $retval;

       join WYRA,LISTA
               Lczy osobne lacuchy LISTY w pojedynczy lacuch, w ktorym pola s
               rozdzielone wartociami WYRA. Zwraca ten lacuch.  Przyklad:

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

               Zobacz te opis split.

       keys HASH
               Zwraca normalna tablic, skladajc si z wszystkich kluczy
               nazwanej tablicy asocjacyjnej. (W kontekcie skalarnym, zwraca
               liczb kluczy.) Klucze s zwracane w do losowej kolejnoci, lecz w
               tej samej, w ktorej swoje wartoci produkuj funkcje values() i
               each() (o ile tablica asocjacyjna nie byla [w midzyczasie]
               zmieniana).  W efekcie ubocznym, funkcja resetuje iterator
               tablicy.

               A oto jeszcze inny sposob na wydrukowanie rodowiska:

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

               a co, jeli by je posortowa wedlug klucza:

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

               Aby posortowa tablic wedlug wartoci, bdziesz musial uy funkcji
               sort. Oto numeryczne posortowanie tablicy asocjacyjnej wedlug
               jej wartoci:

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

               Jako lwarto, keys umoliwia zwikszanie liczby komorek
               asocjacyjnych, zaalokowanych dla danej tablicy asocjacyjnej.
               Moesz zyska na efektywnoci, jeli tablica ma by dua. (Jest to
               podobne do pre-rozszerzania tablicy przez przeznaczanie $#array
               wikszego numeru.)  Jeli powiesz

                   keys %hash = 200;

               to %hash bdzie  mial co najmniej 200 zaalokowanych komorek.
               Komorki te bd utrzymywane nawet, jeli zrobisz %hash = (). Jeli
               chcesz zwolni zasob wewntrz zakresu, uyj undef %hash.
               Korzystajc z powyszej wlaciwoci, zawsze mona zmniejszy liczb
               zaalokowanych komorek.

       kill LISTA
               Wysyla sygnal do listy procesow. Pierwszy element listy musi by
               nazw sygnalu. Zwraca liczb procesow, do ktorych udalo si
               przesla sygnal.

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

               W przeciwiestwie do zachowania w powloce, w perlu jeli -1SYGNA/L
               jest ujemny, to killuje grupy procesow, zamiast procesow. (W
               Systemie V, ujemny numer PROCESU odnosi si te do grup procesow,
               lecz nie jest to przenone.) Oznacza to, e zazwyczaj chcesz
               przekazywa sygnaly dodatnie. Moesz te uywa nazw sygnalow w
               cudzyslowach. Zobacz jeszcze sekcj Signals w podrczniku
               perlipc(1).

       last ETYKIETA

       last    Komenda last jest podobna do instrukcji break z C (uywanej w
               ptlach); przerywa natychmiastowo ptl. Jeli pominity jest
               parametr ETYKIETY, to komenda odnosi si do najbardziej
               wewntrznej ptli zamykajcej. Potencjalna instrukcja bloku
               continue nie jest wykonywana:

                   LINE: while (<STDIN>) {
                       last LINE if /^$/;      # zakocz po skoczeniu z naglowkiem
                       ...
                   }

       lc WYRA

       lc      Zwraca WYRA w malych literach. Jest to wewntrzna funkcja,
               implementujca escape \L w lacuchach ujtych w cudzyslowy. Jeli
               wlczone jest use locale, to szanuje biece locale LC_CTYPE.
               Zobacz stron podrcznika perllocale(1).

               Jeli WYRA jest pominite, uywane jest $_.

       lcfirst WYRA

       lcfirst Zwraca warto WYRA, w ktorym pierwszy znak jest zastpiony mal
               liter. Jest to funkcja wewntrzna, implementujca escape \l w
               lacuchach ujtych w podwojne cudzyslowy. Jeli wlczone jest use
               locale, to szanuje biece locale LC_CTYPE. Zobacz stron
               podrcznika perllocale(1).

               Jeli WYRA jest pominite, uywane jest $_.

       length WYRA

       length  Zwraca dlugo w znakach wartoci WYRA. Jeli WYRA jest pominite,
               zwracana jest dlugo $_.

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

       listen GNIAZDO,ROZMIARKOLEJKI
               Robi to samo, co wywolanie systemowe listen(2). Zwraca TRUE po
               sukcesie, a w przeciwnym wypadku FALSE. Zobacz przyklad w
               sekcji Sockets: Client/Server Communication w podrczniku
               perlipc(1).

       local WYRA
               Local modyfikuje wymienione zmienne tak, e s lokalne w
               otaczajcym je bloku, podprocedurze, eval{}, lub do. Jeli
               wymieniona jest wicej ni jedna warto, to lista musi by
               umieszczona w nawiasach. Zobacz sekcj Temporary Values via
               local() w podrczniku perlsub(1).

               Zamiast local(), czsto raczej wolalby uy my(), gdy to pierwsze
               tak naprawd nie jest tym czym si wikszoci ludzi wydaje.
               Odsylam do sekcji Private Variables via my() w podrczniku
               perlsub(1).

       localtime WYRA
               Konwertuje czas, zwrocony przez funkcj time na 9-elementow
               tablic, ktorej czas jest zanalizowany dla lokalnej strefy
               czasowej. Zazwyczaj jest to uywane nastpujco:

                   #  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 rzeczywistoci znaczy to, e $mon ma zasig
               0..11, a $wday 0..6, gdzie 0 oznacza niedziel. Poza tym, $year
               jest liczb lat ot 1900 roku, tj. rok 123 oznacza 2023.

               Jeli WYRA zostanie pominite, to uywany jest czas biecy
               (localtime(time)).

               W kontekcie skalarnym, zwraca warto ctime(3):

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

               Zobacz te modul Time::Local i funkcje  strftime(3) i mktime(3),
               dostpne przez modul POSIX.

       log WYRA

       log     Zwraca logarytm (podstawa e) z WYRA. Jeli WYRA jest pominite,
               zwraca warto dla $_.

       lstat UCHWYTPLIKU

       lstat WYRA

       lstat   Robi to samo, co funkcja stat(), lecz zamiast plikow, na ktore
               wskazuj dowizania symboliczne, testuje same dowizania. Jeli
               twoj system nie obsluguje dowiza symbolicznych, dokonywany jest
               zwykly stat().

               Jeli WYRA jest pominite, uywane jest $_.

       m//     Operator porownania. Zobacz stron perlop(1).

       map BLOK LISTA

       map WYRA,LISTA
               Analizuje BLOK lub WYRA dla kadego elementu LISTY (ustawiajc
               lokalnie $_ na kady element) i zwraca warto listow, zloon z
               wynikow kadego analizowania. BLOK lub WYRA jest analizowany w
               kontekcie listowym, wic kady element LISTY moe da zero, jeden,
               lub wicej elementow w wartoci zwracanej.

                   @chars = map(chr, @nums);

               tlumaczy list liczb na odpowiadajce 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, ktorego prawa s
               okrelone przez PRAWA (zmodyfikowane przez umask). Jeli operacja
               zakoczy si sukcesem, zwraca 1, w przeciwnym wypadku zwraca 0 i
               ustawia $!  (errno).

       msgctl ID,CMD,ARG
               Wola funkcj IPC msgctl(2) z Systemu V. Jeli CMd jest &IPC_STAT,
               to ARG musi by zmienn, ktora bdzie przechowywa zwrocon struktur
               msquid_ds. Warto zwracana tej funkcji jest podobna do ioctl:
               dla bldu warto niezdefiniowana, "0 but true" dla zera, oraz
               rzeczywista warto zwracana dla innych wypadkow.

       msgget KLUCZ,FLAGI
               Wola funkcj IPC msgget(2) z Systemu V. Zwraca identyfikator
               kolejki komunikatow, lub warto niezdefiniowan (w wypadku bldu).

       msgsnd ID,MSG,FLAGI
               Wola funkcj IPC msgsnd(2) z Systemu V, ktora przesyla komunikat
               MSG do kolejki komunikatow ID. MSG musi zaczyna si wartoci long
               int, okrelajc typ, ktor mona utworzy z pomoc pack("l",$typ).
               Zwraca TRUE po sukcesie i FALSE w wypadku bldu.

       msgrcv ID,VAR,ROZMIAR,TYP,FLAGI
               Wola funkcj IPC msgrcv(2) z Systemu V. Funkcja odbiera
               komunikat z kolejki komunikatow ID i zapisuje go do zmiennej
               VAR.  Maksymalna odbierana wiadomo ma wielko ROZMIAR. Zauwa, e
               gdy wiadomo jest odbierana, to jej typ bdzie pierwsz rzecz,
               ldujc w VAR, a maksymalna dlugo VAR to ROZMIAR plus rozmiar
               typu komunikatu. Zwraca TRUE po sukcesie, a FALSE w wypadku
               bldu. [przyp.tlum.: pole TYPE generalnie w IPC oznacza typ,
               zdefiniowany w pierwszych 4 bajtach komunikatu]

       my WYRA Instrukcja "my" deklaruje wymienione zmienne jako lokalne dla
               zamknitego bloku, podprocedury, eval lub pliku potraktowanego
               instrukcjami do/require/use.  Jeli wymieniono wicej ni jedn
               warto, lista musi by ujta w nawiasy.  Zobacz jeszcze sekcj
               Private Variables via my() w podrczniku perlsub(1).

       next ETYKIETA

       next    Komenda next jest podobna do instrukcji continue w C;
               rozpoczyna kolejn iteracj ptli:

                   LINE: while (<STDIN>) {
                       next LINE if /^#/;      # pozbd si komentarzy
                       ...
                   }

               Zauwa, e jeli powyej byl blok continue, to zostalby on wykonany
               nawet na usunitych liniach. Jeli argument ETYKIETY jest
               pominity, komenda odnosi si do najbardziej wewntrznej
               otaczajcej ptli.

       no Module LISTA
               Zobacz funkcj "use", gdzie "no" jest przeciwiestwem.

       oct WYRA

       oct     Interpretuje WYRA jako lacuch osemkowy i zwraca odpowiadajc
               warto. (Jeli WYRA zaczyna si od 0x, jest interpretowane jako
               lacuch szesnastkowy.) Nastpujcy kod obsluguje liczby dziesitne,
               osemkowe i szesnastkowe w standardowej notacji perla lub C:

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

               Jeli WYRA jest pominite, uywa $_. Funkcja ta jest czsto uywana
               gdy lacuch w rodzaju "644" musi by np. przekonwertowany na
               prawa pliku. (Chocia perl automatycznie konwertuje lacuchy na
               liczby, zgodnie z potrzebami, to automatyczna konwersja zaklada
               podstaw 10.)

       open UCHWYTPLIKU,WYRA

       open UCHWYTPLIKU
               Otwiera plik, ktorego nazwa jest przekazywana WYRA, a nastpnie
               wie go z UCHWYTEMPLIKU. Jeli UCHWYTPLIKU jest wyraeniem, to
               jego warto jest uywana jako nazwa rzeczywistego uchwytu pliku.
               Jeli WYRA jest pominite, 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 bd w ten
               sposob dzialaly.)

               Jeli nazwa pliku rozpoczyna si od '<' lub od niczego, plik jest
               otwierany dla wejcia (odczytu). Jeli nazwa pliku rozpoczyna si
               od '>', plik jest kasowany i otwierany dla zapisu. Jeli nazwa
               pliku rozpoczyna si od '>>', plik jest otwierany dla
               dopisywania.  Jeli przed '>' lub '<' postawisz '+', oznacza to,
               e chcesz zarowno czyta, jak i zapisywa do pliku. Tryb '+<' jest
               zazwyczaj preferowany dla poprawek odczytu/zapisu--tryb '+>'
               najpierw pobilby plik. Przedrostek i nazwa pliku mog by
               oddzielone spacjami. Wszystkie te przedrostki odpowiadaj trybom
               otwarcia funkcji fopen(3).

               Jeli nazwa pliku rozpoczyna si od "|", to plik jest rozumiany
               jako komenda, do ktorej potokiem przesylane jest wyjcie.
               Odwrotnie, jeli nazwa pliku koczy si tym symbolem, to nazwa
               pliku jest interpretowana jako komenda, ktorej wyjcie jest
               przesylane potokiem na nasze wejcie (Zobacz sekcj Using open()
               for IPC w podrczniku perlipc(1)).  (Moesz nie mie czystego
               open(), powodujcego, e komenda jest zarowno potokiem wejciowym,
               jak i wyjciowym. S jednak na to rady, zobacz stron podrcznika
               IPC::Open2, IPC::Open3, oraz sekcj Bidirectional Communication
               w podrczniku perlipc(1).)

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

               Jeli masz na tyle pecha, e pracujesz z perlem na systemie,
               ktory odronia pliki tekstowe i binarne (nowoczesne systemy ich
               nie rozroniaj), to powiniene poczyta o funkcji binmode,
               opisanej gdzie w tym dokumencie. Systemy, wymagajce binmode
               rozpoznaje si po ich formacie pliku tekstowego. Systemy takie,
               jak Unix i Plan9, ktore oddzielaj linie pojedynczym znakiem i
               ktore koduj go w C jako "\n", nie potrzebuj binmode.  Reszta
               tak.

               Przyklady:

                   $ARTICLE = 100;
                   open ARTICLE or die "Nie mog znale artykulu $ARTICLE: $!\n";
                   while (<ARTICLE>) {...

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

                   open(DBASE, '+<dbase.mine');            # otworz dla odnowienia

                   open(ARTICLE, "caesar <$article |");    # dekoduj artykul

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

                   # przetworz list argumentow plikow, wraz z wszelkimi zalcznikami

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

                   sub process {
                       local($filename, $input) = @_;
                       $input++;               # jest to inkrementacja lacuchowa
                       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
                       }
                   }

               Moesz rownie, zgodnie z tradycj powloki Bourne, poda WYRA,
               zaczynajcy si od ">&", co oznacza, e reszta lacucha jest
               interpretowana jako nazwa uchwytu pliku (lub numerycznego
               deskryptora pliku), ktory naley zduplikowa i otworzy. & mona uy
               po >, >>, <, +>, +>>, i +<.  Tryb, ktory podasz, powinien
               odpowiada trybowi oryginalnego uchwytu pliku. (Duplikowanie
               uchwytow pliku nie pobiera na konto adnych istniejcych
               zawartoci buforow stdio.)  Oto skrypt, ktory zachowuje,
               przekierowuje i odwiea 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;     # zrob niebuforowane
                   select(STDOUT); $| = 1;     # j/w

                   print STDOUT "stdout 1\n";  # dziala to te dla
                   print STDERR "stderr 1\n";  # podprocesow

                   close(STDOUT);
                   close(STDERR);

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

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

               Moesz poda "<&=N", gdzie N jest liczb. Perl wtedy dokona
               operacji rownowanej fdopen(3) z C. Na przyklad:

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

               Jeli otwierasz potok do komendy "-", np. albo "|-" albo "-|",
               to dokonywany jest niejawny fork, a zwrocona warto open jest
               wewntrz procesu rodzicielskiego pidem potomka, a w wtku potomka
               zerem. (Aby okreli, czy open byl pomylny, uyj defined($pid).)
               Uchwyt pliku u rodzica zachowuje si normalnie, lecz i/o dla
               tego uchwytu jest przesylane 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 uywane jak
               normalny potokowy open, lecz daje lepsz kontrol nad
               wywolywaniem komendy potoku, np. gdy pracujesz w suid i nie
               chcesz by zmuszonym do skanowania komend powloki w poszukiwaniu
               metaznakow.  Nastpujce pary s mniej lub bardziej rownowane:

                   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 szczegolow, zobacz sekcj Safe Pipe Opens w podrczniku
               perlipc(1).

               UWAGA: Przy kadej operacji, dokonujcej forkowania, nieopronione
               bufory pozostaj takie w obydwu procesach, co znaczy, e lepiej
               ustawi $|, aby zapobiec duplikowaniu wyjcia.

               Zamykanie potokowego uchwytu pliku powoduje, e proces
               rodzicielski czeka, a dziecko zakoczy i zwraca warto statusu w
               $?.

               Jeli uywasz konstruktora z pakietu IO::Handle (lub z jego
               podklas, takich jak IO::File czy IO::Socket), moesz generowa
               anonimowe uchwyty plikow, ktore maj zakres dowolnych zmiennych,
               ktore utrzymuj do nich referencje. Zamykaj si one automatycznie
               po wyjciu 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 zamknicie tutaj.
                       mung $first or die "mung failed";       # Lub tutaj.
                       return $first, <$handle> if $ALL;       # Lub tutaj.
                       $first;                                 # Lub tutaj.
                   }

               Nazwa pliku, ktora jest przekazana open, przechodzi operacj
               usuwania prowadzcych i koczcych bialych spacji. Aby otworzy
               plik, posiadajcy te dziwne znaki, trzeba je chroni:

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

               Jeli chcesz uy prawdziwego, znanego z C open() (zobacz stron
               open(2)), to powiniene uy funkcji sysopen(). Jest to inny
               sposob chronienia nazw plikow 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(), znajdujcy si gdzie indziej w tym
               dokumencie.

       opendir UCHWYTKATALOGU,WYRA
               Otwiera katalog o nazwie WYRA. Otwarty uchwyt mona przetwarza
               funkcjami readdir(), telldir(), seekdir(), rewinddir(), i
               closedir().  Po sukcesie zwraca TRUE. Uchwyty katalogow maj
               swoj wlasn przestrze nazw. Jest ona oddzielna od uchwytow
               plikow.

       ord WYRA

       ord     Zwraca numeryczn warto ascii pierwszego znaku WYRA. Jeli WYRA
               zostalo pominite, uywane jest $_. Dla operacji odwrotnej,
               zobacz opis chr, znajdujcy si gdzie w tym dokumencie.

       pack WZORZEC,LISTA
               Pobiera tablic lub list wartoci i pakuje j w struktur binarn,
               zwracajc lacuch, zawierajcy t struktur. WZORZEC jest sekwencj
               znakow, ktore pokazuj kolejno i typy wartoci. S one nastpujce:

                   A   Lacuch ascii, dopelniany spacjami.
                   a   Lacuch ascii, dopelniany przez null.
                   b   Lacuch bitowy (wznoszca kolejno bitow, jak w vec()).
                   B   Lacuch bitowy (malejca kolejno bitow).
                   h   Lacuch szesnastkowy (najpierw niski nibble).
                   H   Lacuch 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 _dokladnie_ 16 bitowy, co moe si roni 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. Dokladny rozmiar zaley
                          od tego, co lokalny kompilator C uwaa za 'int' i moe by nawet
                          wiksze ni 'long', opisywany dalej.)

                   l   Warto long ze znakiem.
                   L   Warto long bez znaku.
                         (Ta warto 'long' jest _dokladnie_ 32 bitowa, co moe si
                          roni od tego, co lokalny kompilator C uwaa za 'long'.)

                   n   Short w porzdku sieciowym (big-endian).
                   N   Long w porzdku sieciowym (big-endian).
                   v   Short w porzdku "VAX" (little-endian).
                   V   Long w porzdku "VAX" (little-endian).
                         (Te 'short' i 'long' s _dokladnie_ 16 i
                          32 bitowe (odpowiednio).)

                   f   Float pojedynczej precyzji w formacie macierzystym.
                   d   Float podwojnej precyzji w formacie macierzystym.

                   p   Wskanik do lacucha zakoczonego zerem.
                   P   Wskanik do struktury (lacuch o ustalonej dlugoci).

                   u   Uuencodowany lacuch.

                   w   Skompresowany integer BER. Jego bajty reprezentuj calkowity
                       integer o podstawie 128, najpierw bardziej znaczce cyfry,
                       z tak mal iloci cyfr, jak tylko si da. Osmy bit jest ustawiany
                       na kadym bajcie, poza ostatnim.

                   x   Bajt null.
                   X   Wstecz o bajt (?) (Back up a byte).
                   @   Wypelnienie null do bezwzgldnej pozycji (?)
                       (Null fill to absolute position).

               Po kadej literze moe opcjonalnie nastpowa liczba, ktora podaje
               licznik powtorze. Dla wszystkich typow, poza "a", "A", "b",
               "B", "h", "H", i "P", funkcja pack pore tyle samo wartoci z
               LISTY.  Gwiazdka (*) dla licznika powtorze, oznacza uycie
               wszystkich elementow, ktore pozostaly. Typy "a" i "A" pobieraj
               tylko jedn warto, lecz pakuj j jako lacuch o podanej dlugoci,
               wypelniajc j w razie potrzeby zerami, lub spacjami. (Podczas
               rozpakowywania, "A" zdejmuje koczce spacje i zera, lecz "a"
               tego nie robi.)  Podobnie, pola "b" i "B" pakuj lacuchy, ktore
               s dlugoci tylu bitow. "h" i "H" pakuj lacuchy, ktore s dlugoci
               tylu nibblow. "P" pakuje wskanik do struktury, ktorej rozmiar
               jest wskazywany przez dlugo. Liczby rzeczywiste (float, double)
               s tylko w formacie macierzystym maszyny; z powodu wieloci
               formatow 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 jeli obydwie uywaj arytmetyki zmiennoprzecinkowej IEEE
               (gdy endainowo pamici nie jest czci specyfikacji IEEE). Zauwa,
               e perl uywa wewntrznie 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 bdzie w ogolnym przypadku si rowna $foo).

               Przyklady:

                   $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 moe by ogolnie uywany te w funkcji unpack.

       package PRZESTRZENAZW
               Deklaruje jednostk kompilacji, przynalec do danej przestrzeni
               nazw.  Zakres deklaracji pakietu ley od deklaracji, do koca
               otaczajcego bloku (tak samo, jak zakres operatora local()).
               Wszelkie dalsze niekwalifikowane identyfikatory dynamiczne bd
               wewntrz tej przestrzeni nazw. Instrukcja package dotyczy tylko
               zmiennych dynamicznych--wlczajc w to te, ktorych uyle lokalnie
               (local()),--lecz nie zmienne leksykalne, utworzone przez my().
               Zazwyczaj jest to pierwsza deklaracja we wlczanym przez require
               lub use pliku.  Moesz przelczy si do pakietu w wicej ni jednym
               miejscu; ma to wplyw jedynie na to, ktorej tablicy symboli uywa
               kompilator dla reszty bloku.  Do zmiennych i uchwytow plikow  z
               innych pakietow, moesz odnosi si, poprzedzajc identyfikatory
               nazwami pakietow, za ktorymi nastpuj dwa dwukropki:
               $Pakiet::Zmienna.  Jeli nazwa pakietu jest zerowa, uywany jest
               pakiet main. Tak wic $::sail jest rownowane $main::sail.

               Zobacz sekcj Packages w podrczniku perlmod(1).  Zobacz te
               podrcznik perlsub(1), gdzie opisane s problemy zakresow.

       pipe UCHWYTODCZYTU,UCHWYTZAPISU
               Otwiera par polczonych potokow, zupelnie jak wywolanie
               systemowe pipe(2). Zauwa, e jeli zestawiasz ptle potokowych
               procesow, to o ile nie zachowasz ostronoci, moe pojawi si
               deadlock. Dodatkowo, zauwa, e potoki perla uywaj buforowania
               stdio, wic moesz by zmuszonym ustawi $|, aby oproni swoj
               UCHWYTZAPISU po kadej z komend, zalenie od aplikacji.

               Obejrzyj jeszcze stron IPC::Open2, IPC::Open3 oraz sekcj
               Bidirectional Communication z podrcznika perlipc(1). S tam
               przyklady takich rzeczy.

       pop TABLICA

       pop     Pobiera i zwraca ostatni warto tablicy, skracajc j o jeden. Ma
               podobne dzialanie do

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

               Jeli tablica nie ma elementow, zwracana jest warto
               niezdefiniowana.  Jeli parametr TABLICA zostanie pominity, to
               pobiera z tablicy @ARGV w programie glownym, oraz z @_ w
               podprocedurach, podobnie jak shift().

       pos SKALAR

       pos     Zwraca offset, gdzie dla zmiennej SKALAR zakoczylo si ostatnie
               przeszukiwanie m//g. (Jeli nie podano zmiennej, uywany jest
               $_).  Mona go modyfikowa w celu zmieniania offsetu. Modyfikacja
               ta wplynie rownie na zapewnienia zerowej szerokoci \G w
               wyraeniach regularnych. Zobacz podrczniki perlref(1) i
               perlop(1).

       print UCHWYTPLIKU LISTA

       print LISTA

       print   Drukuje oddzielon przecinkami list lacuchow. Po sukcesie zwraca
               TRUE. UCHWYTPLIKU moe by nazw zmiennej skalarnej, w ktorym
               wypadku zmienna ta przechowuje nazw lub referencj do uchwytu
               pliku, wprowadzajc tak poziom niebezporednioci.  (UWAGA: Jeli
               UCHYTPLIKU jest zmienn, a nastpny token jest [term], to moe to
               by le zinterpretowane jako operator, chyba e wstawisz +, lub
               ujmiesz argumenty w nawiasy.) Jeli UCHWYTPLIKU jest pominity,
               drukowanie nastpuje na standardowe wyjcie (lub do ostatnio
               wybranego kanalu wyjciowego--zobacz opis select, znajdujcy si
               gdzie w tym dokumencie ).  Jeli pominito rownie argument LISTY,
               na STDOUT drukowane jest $_.  Aby ustawi kanal wyjciowy na co
               innego ni STDOUT, uyj operacji select. Zauwa, e z uwagi na to,
               e print pobiera LIST, wszystko z LISTY jest analizowane w
               kontekcie listowym, a  wszelka podprocedura, ktor wywolasz,
               bdzie miala jedno, lub wicej wyrae analizowanych w kontekcie
               listowym. Uwaaj te, by nie wpisywa z slowem kluczowym print
               lewego nawiasu, chyba e chcesz by odpowiadajcy prawy nawias
               koczyl argumenty do drukowania--wstaw +, lub otocz wszystkie
               argumenty nawiasami.

               Zauwa, e jeli przechowujesz UCHWYTYPLIKOW w tablicy, lub innym
               wyraeniu, bdziesz musial uywa bloku, zwracajcego jego warto:

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

       printf UCHWYTPLIKU FORMAT, LISTA

       printf FORMAT, LISTA
               Rownowane print UCHWYTPLIKU sprintf(FORMAT, LISTA).  Pierwszy
               argument list bdzie interpretowany jako format printf.  Jeli
               wlczone jest use locale, to znak uywany dla kropki dziesitnej
               jest zaleny od locala LC_NUMERIC. Zobacz stron podrcznika
               perllocale(1).

               Nie wpadnij w pulapk uywania printf(), gdy wystarczylby zwykly
               print(). Funkcja print() jest efektywniejsza i mniej wraliwa na
               bldy.

       prototype FUNKCJA
               Zwraca w postaci lacucha prototyp funkcji (lub undef, jeli
               funkcja nie ma prototypu). FUNKCJA jest referencj lub nazw
               funkcji, ktorej prototyp usilujemy uzyska.

       push TABLICA,LISTA
               Traktuje TABLIC jako stos i wrzuca na jej szczyt wartoci LISTY.
               Dlugo TABLICY zwiksza si o dlugo LISTY. Ma takie samo dzialanie
               jak

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

               lecz jest efektywniejsze. Zwraca now liczb elementow tablicy.

       q/LACUCH/

       qq/LACUCH/

       qx/LACUCH/

       qw/LACUCH/
               Uogolnione cudzyslowy. Zobacz stron perlop(1).

       quotemeta WYRA

       quotemeta
               Zwraca warto WYRA z poprzedzonymi odwroconymi ukonikami
               wszystkimi nie-alfanumerycznymi znakami. (To znaczy, e
               wszystkie znaki, nie podpadajce pod /[A-Za-z_0-9]/ zostan
               poprzedzone odwrotnym ukonikiem, niezalenie od ustawie locale.)
               Jest to wewntrzna funkcja, implementujca escape Q w lacuchach z
               podwojnych cudzyslowow.

               Jeli WYRA jest pominite, uywane jest $_.

       rand WYRA

       rand    Zwraca losow liczb, wiksz lub rown 0 i mniejsz od wartoci WYRA.
               (WYRA powinno by dodatnie.) Jeli WYRA jest pominite, uywana
               jest warto 1. Automatycznie wywoluje srand(), chyba e byl on ju
               wywolany. Zobacz te opis srand().

               (Uwaga: Jeli twoja funkcja rand zwraca stale liczby, ktore s
               zbyt wielkie, lub zbyt male, to znaczy, e twoja wersja perla
               prawdopodobnie zostala skompilowana ze zl liczb RANDBITS.)

       read UCHWYTPLIKU,SKALAR,DLUGO,OFFSET

       read UCHWYTPLIKU,SKALAR,DLUGO
               Probuje odczyta DLUGO bajtow danych do zmiennej SKALAR z pliku
               wskazywanego przez UCHWYTPLIKU. Zwraca liczb odczytanych
               bajtow, lub undef w wypadku bldu. SKALAR zostanie rozcignity,
               lub skurczony do rzeczywistej dlugoci odczytanych danych. Mona
               te poda OFFSET. Wtedy odczyt nastpi w innym miejscu ni pocztek
               lacucha.  Wywolanie to jest w rzeczywistoci zaimplementowane w
               oparciu o wywolanie fread(3) stdio. Aby uzyska prawdziwe
               wywolanie systemowe read(2), uyj sysread().

       readdir UCHWYTKATALOGU
               Zwraca nastpny wpis katalogu, otwartego przez opendir(). Jeli
               jest uywane w kontekcie listowym, zwraca reszt wpisow w
               katalogu. Jeli nie ma ju wicej wpisow, w kontekcie skalarnym
               zwracana jest warto niezdefiniowana, a w kontekcie listowym
               list null.

               Jeli masz zamiar dokonywa testow plikowych na wartociach
               zwracanych przez readdir(), to lepiej poprzed te nazwy
               katalogiem. Powinno si tak robi, gdy nie readdir() nie
               przechodzi do swojego katalogu i zaszlo by testowanie nie tego
               pliku co trzeba.

                   opendir(DIR, $some_dir) || die "Nie powiodl si opendir $some_dir: $!";
                   @dots = grep { /^\./ && -f "$some_dir/$_" } readdir(DIR);
                   closedir DIR;

       readlink WYRA

       readlink
               Zwraca warto dowizania symbolicznego. Dziala to, jeli dowizania
               symboliczne s zaimplementowane [w systemie]. W przeciwnym
               wypadku powstaje bld krytycznych. W wypadku bldu systemowego,
               zwracana jest warto niezdefiniowana i ustawiane jest $!
               (errno). Jeli WYRA zostanie pominite, uywane jest $_.

       recv GNIAZDO,SKALAR,DLUGO,FLAGI
               Odbiera komunikat na gniedzie. Probuje odebra DLUGO bajtow do
               zmiennej SKALAR. (GNIAZDO to uchwyt gniazda).  W rzeczywistoci
               funkcja wykonuje odpowiednik funkcji C recvfrom()(2), wic
               zwraca adres nadawcy. W wypadku bldu, zwracana jest warto
               niezdefiniowana. SKALAR bdzie rozcigany do dlugoci rzeczywicie
               odczytanych danych. Flagi s takie same jak w wywolaniu
               systemowym o tej samej nazwie.  Zobacz jeszcze sekcj UDP:
               Message Passing w podrczniku perlipc(1). S tam przyklady.

       redo ETYKIETA

       redo    Komenda redo restartuje blok ptli, nie analizujc przy tym
               warunku.  Blok continue (jeli taki istnieje) rownie nie jest
               wykonywany.  Jeli pominita zostanie ETYKIETA, komenda odnosi si
               do najbardziej wewntrznej otaczajcej ptli. Komenda ta jest
               zazwyczaj wykorzystywana przez programy, ktore chc si oszukiwa
               co do tego, co bylo wlanie pobrane:

                   # Uproszczony ogolacacz komentarzy Pascala
                   # (uwaga: zaklada brak { i } w lacuchach)
                   LINE: while (<STDIN>) {
                       while (s|({.*}.*){.*}|$1 |) {}
                       s|{.*}| |;
                       if (s|{.*| |) {
                           $front = $_;
                           while (<STDIN>) {
                               if (/}/) {      # Koniec komentarza?
                                   s|^|$front{|;
                                   redo LINE;
                               }
                           }
                       }
                       print;
                   }

       ref WYRA

       ref     Jeli warto WYRA jest referencj, zwracane jest TRUE, a w
               przeciwnym wypadku FALSE. Jeli WYRA zostanie pominite, uyte
               zostanie $_. Zwracana warto zaley od typu, do ktorego
               referencja jest referencj.  Wbudowane typy to:

                   REF
                   SCALAR
                   ARRAY
                   HASH
                   CODE
                   GLOB

               Jeli referencjowany obiekt zostal blogoslawiony (bless()) do
               pakietu, to zwracana jest nazwa pakietu. Moesz myle 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 podrcznika perlref(1).

       rename STARANAZWA,NOWANAZWA
               Zmienia nazw pliku. Po sukcesie zwraca 1, w przeciwnym wypadku
               0. Nie dziala midzy granicami systemow plikow.

       require WYRA

       require Zadaj pewnej wlaciwoci, podanej przez WYRA, lub $_, jeli go nie
               podano. Jeli WYRA jest numeryczne, to wymaga ono by bieca
               wersja perla ($] lub $PERL_VERSION) byla wiksza lub rowna WYRA.

               W przeciwnym wypadku da wlczenia pliku biblioteki (o ile nie
               jest on ju wlczony). Plik jest wlczany z uyciem mechanizmu do-
               PLIK, ktory w zasadzie jest wariacj eval(). Semantyka jest
               podobna do nastpujcej 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 zwrocilo prawdziwej wartoci" unless $result;
                       $INC{$filename} = $realfilename;
                       $result;
                   }

               Zauwa, e plik nie bdzie wlczany pod t sam nazw dwukrotnie. Jako
               ostatni instrukcj, plik musi zwraca TRUE, wskazujc tak pomylne
               wykonanie kodu inicjalizacji, wic zazwyczaj koczy si takie
               pliki "1;", chyba e jeste pewien, e zwroci TRUE tak czy
               inaczej. Lepiej jednak wstawi po prostu"1;", na wypadek np.
               dodania nowych instrukcji.

               Jeli WYRA jest prostym slowem, require zaklada rozszerzenie
               ".pm" i samodzielnie zamienia "::" na "/", ulatwiajc ladowanie
               modulow standardowych. Ta posta ladowania modulow 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 potniejszego narzdzia importu, obejrzyj opis use, znajdujcy
               si w tym dokumencie, oraz stron perlmod(1).

       reset WYRA

       reset   Ogolnie, uywane w bloku continue na kocu ptli, w celu
               wyczyszczenia zmiennych i resetowania przeszukiwa ??, tak by
               znow dzialaly.  Wyraenie jest interpretowane jako lista
               pojedynczych znakow (dla podawania zakresow, mona uywa
               mylnikow). Wszystkie zmienne i tablice, rozpoczynajce si na
               jedn z tych liter, s resetowane do stanu pierwotnego. Jeli
               wyraenie zostanie pominite, przeszukiwania jednego-trafienia
               (?wzorzec?) s resetowane do ponownego trafienia.  Resetowanie
               tyczy si tylko obiektow biecego pakietu. Zwracane jest zawsze
               1.  Przyklady:

                   reset 'X';          # resetuj wszystkie zmienne X
                   reset 'a-z';        # resetuj zmienne maloliterowe
                   reset;              # resetuj tylko przeszukiwania ??

               Resetowanie "A-Z" nie jest zalecane, gdy odniesie si ono rownie
               do tablic ARGV i ENV.  Resetowane s tylko zmienne
               pakietu--zmienne leksykalne s nietykane, lecz one i tak
               oczyszczaj si na wyjciu z zakresu. Zobacz opis my, znajdujcy si
               gdzie w tym dokumencie.

       return WYRA

       return  Powraca z podprocedury, eval(), lub z do PLIK, z wartoci podan
               przez WYRA. Analiza WYRA moe zachodzi w kontekcie listowym,
               skalarnym, lub pustym (void). Zaley to od sposobu uycia wartoci
               zwracanej, a kontekst moe si zmienia od jednego wywolania do
               drugiego (zobacz wantarray()). Jeli WYRA nie jest podane, w
               kontekcie skalarnym zwracana jest warto niezdefiniowana, w
               listowym pusta lista, a w pustym (void) nic.

               (Zauwa, e przy braku return, podprocedura, eval, lub do PLIK
               zakocz automatycznie z wartoci ostatniego wykonanego wyraenia.)

       reverse LISTA
               W kontekcie listowym, zwraca warto listow, skladajc si z
               elementow LISTY, uloonych w przeciwnym porzdku. W kontekcie
               skalarnym, elementy listy s lczone w lacuch i zwracane w
               odwroconym porzdku.

                   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 zastrzeenia. Jeli warto jest w
               oryginalnej tablicy zduplikowana, to tylko jedna z nich moe by
               reprezentowana jako klucz w tablicy odwroconej. Musi to te
               przewin cal tablic i zbudowa now, co dla duej tablicy moe troch
               potrwa.

                   %by_name = reverse %by_address;     # Inwersja tablicy asocjacyjnej

       rewinddir UCHWYTKATALOGU
               Ustawia biec pozycj (dla funkcji readdir()) na pocztek
               katalogu, wskazywanego przez UCHWYTKATALOGU.

       rindex STR,SUBSTR,POZYCJA

       rindex STR,SUBSTR
               Dziala tak samo jak index, lecz zwraca pozycj ostatniego
               pojawienia si SUBSTR w STR. Jeli podano POZYCJ, to zwracane
               jest ostatnie pojawienie na, lub przed t pozycj.

       rmdir NAZWAPLIKU

       rmdir   Kasuje pusty katalog podany przez NAZWPLIKU. Jeli operacja si
               powiedzie, zwraca 1. W przeciwnym wypadku zwracane jest zero i
               ustawiane jest $! (errno). Jeli NAZWAPLIKU jest pominita,
               uywane jest $_.

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

       scalar WYRA
               Wymusza interpretacj skalarn wyraenia WYRA i zwraca jego warto.

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

               Nie istnieje odpowiednik, konwertujcy skalar w list. Jest tak
               dlatego, e w praktyce nie jest on nigdy potrzebny. Jeli jednak
               naprawd chcesz tak zrobi, moesz uy konstrukcji @{[ (jakie
               wyraenie) ]}, a zwykle powinno wystarczy zwykle (some
               expression).

       seek UCHWYTPLIKU,POZYCJA,GDZIE
               Ustawia pozycj UCHWYTUPLIKU, podobnie jak fseek(3) w stdio.
               UCHYTPLIKU moe by wyraeniem, ktorego warto daje nazw uchwytu
               pliku. Wartoci GDZIE to 0, oznaczajce ustawianie nowej pozycji
               na POZYCJ, 1 oznaczajce ustawianie pozycji na pozycj biec plus
               POZYCJ, oraz 2 ustawiajce pozycj na EOF plus POZYCJ (zazwyczaj
               ujemn).  Zamiast numerycznych wartoci GDZIE, mona uywa stalych
               SEEK_SET, SEEK_CUR i SEEK_END z modulu IO::Seekable lub POSIX.
               Po sukcesie zwracane jest 1, po bldzie 0.

               Jeli chcesz ustawi pozycj pliku dla sysread() i syswrite(), nie
               uywaj seek() -- uyj sysseek().

               Na niektorych systemach musisz wykona seek za kadym razem, gdy
               przelczasz si midzy zapisem i odczytem. Wrod innych rzeczy, moe
               to mie efekt wolania funkcji stdio clearerr(3). Warto GDZIE 1
               jest przydatna do nie ruszania si z pozycji pliku:

                   seek(TEST,0,1);

               Jest to rownie przydatne dla aplikacji, emulujcych tail -f. Gdy
               raz wejdziesz na EOF, a potem zaniesz na chwil, to dobrze przed
               nastpnym odczytem uy seek(), aby wszystko zresetowa. seek() nie
               zmienia biecej pozycji, lecz czyci warunek EOF uchwytu, wic
               nastpne <PLIK> powoduje, e perl znow co bdzie probowal odczyta.
               Mamy przynajmniej tak nadziej.

               Jeli to nie dziala (niektore stdio s szczegolnie dziwne), to
               moesz potrzebowa czego wicej, jak:

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

       seekdir UCHWYTKATALOGU,POZYCJA
               Ustawia biec pozycj polecenia readdir() dla katalogu
               wskazywanego przez UCHWYTKATALOGU. POZYCJA musi mie warto
               zwracan przez telldir().

       select UCHWYTPLIKU

       select  Zwraca obecnie wybrany uchwyt pliku. Jeli podano UCHWYTPLIKU,
               ustawia domylny uchwyt pliku dla wyjcia. Daje to dwa efekty: po
               pierwsze write, lub print bez uchwytu pliku bd zapisywaly
               domylnie do tego UCHWYTUPLIKU. Po drugie, odniesienia
               zmiennych, zwizanych z wyjciem, bd si odnosily do tego kanalu
               wyjcia. Np. jeli masz ustawi pocztek formatu formy dla wicej ni
               jednego kanalu, moglby uy nastpujcego:

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

               UCHWYTPLIKU moe by wyraeniem, ktore daje nazw rzeczywistego
               uchwytu pliku. Tak wic:

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

               Niektorzy programici wol myle o uchwytach pliku jak o
               obiektach, posiadajcych metody, zapisujc ostatni przyklad jako:

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

       select RBITS,WBITS,EBITS,TIMEOUT
               Funkcja ta wola z podanymi maskami bitowymi wywolanie systemowe
               select(2). Maski mona skonstruowa, uywajc fileno() i vec():

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

               Jeli chcesz wykonywa t funkcj na wielu uchwytach plikow, moesz
               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);

               Wikszo systemow nie zwraca niczego mdrego w $timeleft, wic
               wywolanie select() w kontekcie skalarnym zwroci po prostu
               $nfound.

               Kada z masek bitowych moe by niezdefiniowana. Podany timeout
               jest podawany w sekundach. Moe by ulamkowy. Uwaga: nie
               wszystkie implementacje zwracaj $timeleft.  Jeli go nie
               zwracaj, to zwracaj warto rown tej, przekazanej w $timeout.

               A oto 250 milisekundowe zanicie:

                   select(undef, undef, undef, 0.25);

               UWAGA: Nie probuj lczy buforowanego I/O (np. read czy <FH>) z
               funkcj select. Uyj zamiast tego sysread().

       semctl ID,SEMNUM,CMD,ARG
               Wola funkcj IPC semctl(2) z Systemu V. Jeli CMD to &IPC_STAT
               lub &GETALL, to ARG musi by zmienn, ktora bdzie przechowywa
               zwrocon struktur semid_ds, lub tablic wartoci semafora.
               Podczas bldu, podobnie jak ioctl zwraca warto niezdefiniowan,
               dla zera lacuch "0 but true", a dla pozostalych wartoci
               rzeczywist warto zwrocon.

       semget KLUCZ,NSEMS,FLAGI
               Wola funkcj IPC semget(2) z Systemu V. Zwraca identyfikator
               semafora, lub warto niezdefiniowan w przypadku bldu.

       semop KLUCZ,LACUCHOP
               Wola funkcj IPC semop(2) z Systemu V. Funkcja ta dokonuje
               operacji semaforowych, np. sygnalizowania i czekania. LACUCHOP
               musi by spakowan tablic struktur semop. Kad ze struktur semop
               mona wygenerowa z pomoc pack("sss", $semnum, $semop, $semflag).
               Liczba operacji semaforowych jest implikowana dlugoci LACUCHOP.
               Po sukcesie, funkcja zwraca TRUE, a w wypadku bldu FALSE. Na
               przyklad nastpujcy 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
               Wysyla na gniazdo komunikat. Pobiera takie same flagi, jak
               wywolanie systemowe send(2). Na gniazdach niepodlczonych, naley
               poda cel wysylania, czyli argument DO. W tej sytuacji uyta
               zostanie funkcja C sendto(2). Funkcja zwraca liczb wyslanych
               znakow, lub w wypadku bldu warto niezdefiniowan.  Zobacz
               jeszcze sekcj UDP: Message Passing w podrczniku perlipc(1). S
               tam przyklady.

       setpgrp PID,PGRP
               Ustawia biec grup procesow dla podanego PIDa (wynoszcego 0 dla
               procesu biecego). Funkcja powoduje bld krytyczny na maszynach
               nie implementujcych setpgrp(2). Jeli argumenty s pominite,
               odnosi si to domylnie do 0,0. Zauwa, e wersja POSIX setpgrp()
               nie przyjmuje adnych argumentow, wic przenone jest tylko
               setpgrp 0,0.

       setpriority CZYJE,KTO,PRIORYTET
               Ustawia biecy priorytet procesu, grupy procesow, lub
               uytkownika. (Zobacz setpriority(2).) Na maszynach nie
               implementujcych tego wywolania systemowego, powoduje bld
               krytyczny.

       setsockopt GNIAZDO,POZIOM,NAZWAOPC,WARTOPC
               Ustawia dan opcj gniazda. W wypadku bldu, zwraca warto
               niezdefiniowan. Jeli nie chcesz przekazywa argumentu, WARTOPC
               moe by podane jako undef.

       shift TABLICA

       shift   Wysuwa pierwsz warto tablicy i zwraca j, skracajc tablic o 1 i
               przenoszc wszystko w dol. Jeli w tablicy nie ma elementow,
               zwracana jest warto niezdefiniowana. Jeli TABLICA zostanie
               pominita, to przesuwana jest w programie glownym tablica @ARGV,
               oraz @_ w podprocedurach. (Jest to okrelone leksykalnie.)
               Zobacz te unshift(), push() oraz pop().  Shift() i unshift()
               robi to samo na lewym kocu tablicy, co pop() i push() na
               prawym.

       shmctl ID,CMD,ARG
               Wola funkcj IPC shmctl(2) z Systemu V. Jeli CMD jest &IPC_STAT,
               to ARG musi by zmienn, ktora bdzie przechowywa zwrocon struktur
               shmid_ds. Warto zwracana jest jak w ioctl: warto
               niezdefiniowana dla bldu, "0 but true" dla zera i rzeczywista
               warto zwrocona w innych wypadkach.

       shmget KLUCZ,ROZMIAR,FLAGI
               Wola funkcj IPC shmget(2) z Systemu V. Zwraca identyfikator
               pamici dzielonej, a w przypadku bldu warto niezdefiniowan.

       shmread ID,ZMIENNA,POZYCJA,ROZMIAR

       shmwrite ID,LACUCH,POZYCJA,ROZMIAR
               Odczytuje, lub zapisuje segment pamici dzielonej, rozpoczynajc
               w pozycji POZYCJA i obslugujc rozmiar ROZMIAR bajtow.  Podczas
               odczytu, ZMIENNA musi by elementem, ktory bdzie przechowywal
               odczytane dane. Podczas zapisywania, jeli LACUCH jest zbyt
               dlugi, uytych zostanie tylko ROZMIAR bajtow; jeli LACUCH jest
               zbyt krotki, to reszta zostanie wypelniona nullami.  Funkcja
               zwraca po sukcesie TRUE oraz FALSE w wypadku bldu.

       shutdown GNIAZDO,JAK
               Wylcza polczenie na gniedzie, w sposob wskazany przez JAK,
               ktory ma tak sam interpretacj, jak w wywolaniu systemowym
               shutdown(2).

       sin WYRA

       sin     Zwraca sinus z WYRA (podanego w radianach). Jeli WYRA jest
               pominite, zwracana jest warto dla $_.

               Dla operacji odwrotnej do sinusa, moesz uy funkcji
               POSIX::asin(), lub nastpujcej relacji:

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

       sleep WYRA

       sleep   Powoduje, e skrypt zasypia na WYRA sekund, lub na zawsze, jeli
               nie podano WYRA.  Spanie mona przerwa, przesylajc procesowi
               SIGALRM. Zwraca ilo przespanych sekund. Przypuszczalnie nie
               powinno si lczy wywola alarm() i sleep(), gdy sleep() jest
               czsto implementowane przy uyciu alarm().

               Na niektorych systemach, spanie moe trwa do sekundy mniej ni
               dale, zalenie od sposobu obliczania sekund. Wikszo nowoczesnych
               systemow przesypia caly okres.

               Dla pauz, lub wikszej dokladnoci ni sekunda, moesz uy
               interfejsu syscall() perla i dosta si do funkcji setitimer(2),
               o ile jest ona obslugiwana przez twoj system. Moesz te zapozna
               si z opisem select(), znajdujcym si gdzie w tym dokumencie.

               Zobacz take funkcj sigpause() z modulu POSIX.

       socket GNIAZDO,DOMENA,TYP,PROTOKOL
               Otwiera gniazdo podanego typu i przywizuje je do uchwytu pliku
               GNIAZDO.  DOMENA, TYP i PROTOKOL s takie same jak dla wywolania
               systemowego socket(2). Przed uywaniem tej funkcji, powiniene uy
               "use Socket;", aby zaimportowa odpowiednie definicje.  Obejrzyj
               przyklad w sekcji Sockets: Client/Server Communication w
               podrczniku perlipc(1).

       socketpair GNIAZDO1,GNIAZDO2,DOMENA,TYP,PROTOKOL
               Tworzy nienazwan par gniazd danego typu, w podanej domenie.
               DOMENA, TYP i PROTOKOL s podawane tak samo, jak dla wywolania
               systemowego socketpair(2). Jeli funkcja nie jest
               zaimplementowana, to powoduje bld krytyczny. Po sukcesie
               zwracane jest TRUE.

       sort NAZWA LISTA

       sort BLOK LISTa

       sort LISTA
               Sortuje LIST i zwraca posortowan warto listow. Jeli pominite
               zostan parametry NAZWA lub BLOK, sortowanie nastpuje w porzdku
               porownywania lacuchow. Jeli podano NAZW, to wskazuje ona na
               podprocedur, zwracajc liczb calkowit, ktora jest mniejsza,
               rowna, lub wiksza od zera, zalenie od tego, jak elementy
               tablicy maj by poukladane. W takich procedurach bardzo
               przydatne s operatory <=> oraz cmp. NAZWA moe by nazw zmiennej
               skalarnej--w tym wypadku warto daje nazw uywanej podprocedury.
               Zamiast NAZWY mona poda BLOK, czyli anonimow podprocedur
               sortujc.

               W celu polepszenia efektywnoci, pomijany jest normalny kod
               wolania podprocedur: podprocedura nie moe by rekurencyjna, a
               dwa porownywane elementy nie s przekazywane przez @_, lecz jako
               globalne zmienna pakietu $a oraz $b (zobacz przyklad poniej). S
               one przekazywane przez referencj, wic nie modyfikuj ani $a, ani
               $b. Nie probuj te deklarowa ich jako leksykalne.

               Nie mona te wyj z bloku sortujcego przy uyciu adnego operatora
               kontroli ptli czy goto().

               Gdy dziala use locale, sort LIST sortuje LIST wedlug
               odpowiedniego locale. Zobacz stron perllocale(1).

               Przyklady:

                   # sortuj leksykalnie
                   @articles = sort @files;

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

                   # teraz niewraliwie na wielko liter
                   @articles = sort {uc($a) cmp uc($b)} @files;

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

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

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

                   # sortuj, uywajc jawnej nazwy podprocedury
                   sub byage {
                       $age{$a} <=> $age{$b};  # zaloenie numerycznoci
                   }
                   @sortedclass = sort byage @class;

                   # to sortuje tablic asocjacyjn %age wedlug wartoci (zamiast klucza)
                   # przy uyciu 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 wedlug malejcego porownania numerycznego,
                   # uywajc pierwszej liczby calkowitej po znaku =, lub w przeciwnym
                   # wypadku caly rekord, bez zwracania uwagi na wielko liter.

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

                   # to samo, duo efektywniej;
                   # zbudujemy zewntrzne 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 uyciu Schwartzian Transform (bez tymczasowych)
                   @new = map { $_->[0] }
                       sort { $b->[1] <=> $a->[1]
                                       ||
                              $a->[2] cmp $b->[2]
                       } map { [$_, /=(\d+)/, uc($_)] } @old;

               Jeli uywasz strict, nie moesz deklarowa $a i $b jako
               leksykalia. S one pakietowymi globaliami. Znaczy to, e jeli
               jeste w pakiecie glownym (main), to jest to

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

               kub po prostu

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

               lecz jeli jeste w pakiecie FooPack, to jest to

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

               Funkcja porownujca musi si zachowywa [jednoznacznie]. Jeli
               zwraca niespojne, nielogiczne wyniki (np. czasem mowic, e $x[1]
               jest mniejsze ni $x[2], a czasem odwrotnie), to interpreter
               perla prawdopodobnie si wysypie i zrzuci core.  Wynika to
               calkowicie z zalenoci od systemowej funkcji bibliotecznej
               qsort(3); funkcja ta czsto nie dokonuje pewnych sprawdze w celu
               polepszenia szybkoci.

       splice TABLICA,OFFSET,DLUGO,LISTA

       splice TABLICA,OFFSET,DLUGO

       splice TABLICA,OFFSET
               Usuwa z tablicy elementy wskazane przez OFFSET i DLUGO, oraz
               zamienia je ewentualnie podanymi elementami LISTY. Zwraca
               elementy, ktore zostaly z tablicy usunite. Tablica zgodnie z
               potrzebami ronie, lub maleje. Jeli parametr DLUGO zostanie
               pominity, to usuwane jest wszystko, poczynajc od OFFSET. A oto
               pewne rownowanoci (zakladajc, 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);

               Przyklad, przy zaloeniu, e dlugoci tablic s przekazywane przed
               tablicami:

                   sub aeq {   # porownaj dwie wartoci listowe
                       local(@a) = splice(@_,0,shift);
                       local(@b) = splice(@_,0,shift);
                       return 0 unless @a == @b;       # ta sama dlugo?
                       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 lacuch na tablic lacuchow i zwraca t tablic.

               Jeli nie jest w kontekcie listowym, to zwraca list znalezionych
               pol i dzieli do tablicy @_. (w kontekcie listowym moesz wymusi
               dzielenie do @_, uywajc jako rozdzielaczy wzorca ??, lecz bdzie
               wci zwraca warto tablicow.) Uywanie jawnego dzielenia do @_ nie
               jest jednak zalecane.

               Jeli WYRA jest pominity, dzielony jest lacuch $_. Jeli pominity
               jest te WZORZEC, dzielenie nastpuje na bialych spacjach (po
               pominiciu wszelkich prowadzcych bialych spacji). Wszystko,
               odpowiadajce WZORCOWI jest uwaane za rozdzielacz pol. (Zauwa, e
               rozdzielacz moe by dluszy ni jeden znak.) Jeli podano warto
               LIMIT i nie jest to liczba ujemna, dzielenie nastpuje do nie
               wicej ni tej iloci pol. Jeli LIMIT nie jest podany, koczce
               wypelnienia nullowe s obcinane (co dobrze pamita uytkownikom
               pop()). Jeli LIMIT jest ujemny, to jest traktowany tak, jakby
               podano arbitralnie duy LIMIT.

               Wzorzec, odpowiadajcy lacuchowi null (eby nie by zmylonym ze
               wzorcem null //, ktory jest tylko jednym czlonkiem z zestawu
               wzorcow odpowiadajcych lacuchowi null) bdzie dzielil warto WYRA
               na oddzielne znaki w kadym punkcie, ktory odpowie zapytaniu.
               Na przyklad:

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

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

               Parametr LIMIT moe by uyty do podzielenia linii czciowo

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

               Podczas przypisywania do listy, jeli nie podano LIMITU, perl
               ustawia domylny limit wielkoci o 1 wikszej ni lista zmiennych
               na licie, zapobiegajc tak niepotrzebnej pracy. Dla powyszej
               listy, LIMIT bylby ustawiony domylnie na 4.  W aplikacjach,
               gdzie czas jest krytycznym czynnikiem, powstrzymuje ci to od
               dzielenia na wicej pol, ni rzeczywicie potrzebujesz.

               Jeli WZORZEC zawiera nawiasy, z lacuchow odpowiadajcym
               podlacuchom rozdzielacza tworzone s dodatkowe elementy tablicy.

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

               daje warto listow

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

               Jeli masz caly naglowek normalnego unixowego komunikatu
               pocztowego w naglowku $header, to moesz rozdzieli go na pola i
               wartoci w nastpujcy sposob:

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

               Wzorzec /WZORZEC/ moe by zamieniony wyraeniem, umoliwiajc tak
               podawanie wzorcow, ktore zmieniaj si w czasie. (aby dokona
               kompilacji czasu dzialania tylko raz, uyj /$variable/o.)

               Specjalnym przypadkiem jest podanie jako WZORZEC spacji (' ').
               Bdzie to powodowa dzielenie na bialych spacjach, podobnie jak
               domylna wersja split. Tak wic split(' ') moe by uywany do
               domylnego zachowania awk, gdzie split(/ /) daje tyle lacuchow
               null, ile jest prowadzcych bialych spacji. Split dla /\s+/ jest
               podobny do split(' '), lecz dowolna biala spacja powoduje null
               na pierwszym polu. Split bez argumentow dokonuje w
               rzeczywistoci wewntrznie split(' ', $_).

               Przyklad:

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

               (Zauwa, e $shell w powyszym bdzie mial za sob now lini.  Aby j
               usun, zapoznaj si z funkcjami chop, chomp i join, opisanymi
               gdzie w tym dokumencie.)

       sprintf FORMAT, LISTA
               Zwraca lacuch, sformatowany wedlug konwencji printf, funkcji
               bibliotecznej jzyka C, sprintf(3).

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

               Perlowy sprintf() zezwala na nastpujce, ogolnie znane
               konwersje:

                  %%   znak procentu
                  %c   znak o podanym kodzie
                  %s   lacuch
                  %d   integer ze znakiem, dziesitnie
                  %u   integer bez znaku, dziesitnie
                  %o   integer bez znaku, osemkowo
                  %x   integer bez znaku, szesnastkowo
                  %e   liczba zmiennoprzecinkowa w notacji naukowej
                  %f   liczba zmiennoprzecinkowa w ustalonej notacji dziesitnej
                  %g   liczba zmiennoprzecinkowa w notacji %e lub %f

               Dodatkowo, perl zezwala na nastpujce szeroko-obslugiwane
               konwersje:

                  %X   podobne do %x, lecz na duych literach
                  %E   podobne do %e, lecz z uyciem duego E
                  %G   podobne do %g, lecz z uyciem duego E
                  %p   wskanik (daje adres wartoci, podany szesnastkowo)
                  %n   specjalne: przechowuje liczb dotychczas wpisanych do nastpnej
                       zmiennej z listy parametrow

               I w kocu, dla kompatybilnoci wstecznej, perl zezwala na ponisze
               zbyteczne, lecz szeroko obslugiwane konwersje:

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

               Perl zezwala na uycie nastpujcych uniwersalnych flag midzy
               znakiem %, a liter konwersji:

                  spacja  poprzed liczb dodatni spacj
                  +       poprzed liczb dodatni plusem
                  -       wyrownuj do lewej w obszarze pola
                  0       uyj zer zamiast spacji do wyrownywania w prawo
                  #       poprzed liczb osemkow "0", szesnastkow "0x"
                  liczba  minimalna wielko pola
                  .liczba "precyzja": liczba cyfr po kropce dziesitnej dla
                          zmiennoprzecinkowych, maksymalna dlugo dla lacucha, lub
                          minimalna dlugo dla liczby calkowitej (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, mona uy gwiazdki
               ("*"). W tym wypadku perl uywa zamiast liczby wartoci nastpnego
               argumentu z listy parametrow. Jeli szeroko pola, uzyskana przez
               "*" jest ujemna, to ma to samo dzialanie, co flaga '-':
               wyrownywanie do lewej.

               Jeli dziala use locale, znaki uywane do kropki dziesitnej bd
               drukowane wedlug locale LC_NUMERIC. Zobacz stron perllocale(1).

       sqrt WYRA

       sqrt    Zwraca pierwiastek kwadratowy z WYRA. Jeli WYRA jest pominite,
               zwraca warto dla $_.

       srand WYRA

       srand   Ustawia nasionko liczby losowej dla operatora rand. Jeli
               pominite zostanie WYRA, uywana jest pseudolosowa warto, oparta
               o biecy czas i identyfikator procesu. W wersjach perla
               wczeniejszych ni 5.004, domylnym nasionkiem byl po prostu biecy
               czas time(). Nie jest to szczegolnie dobre nasionko, wic wiele
               starych programow zalczalo swoj wlasn warto inicjujc (czsto
               time ^ $$, lub C<time ^ ($$ + ($$ << 15))>), lecz teraz nie
               jest to konieczne.

               W rzeczywistoci, zazwyczaj w ogole nie jest konieczne
               wywolywanie srand, poniewa jest ono wywolywane niejawnie przy
               pierwszym uyciu operatora rand. Jednak nie bylo tak w wersjach
               wczeniejszych ni perl 5.005, wic jeli twoj skrypt ma dziala ze
               starszymi wersjami, powinien jednak wola srand().

               Zauwa, e dla potrzeb kryptografii potrzebujesz czego wicej ni
               tylko wylosowa domylne nasionko. Popularn metod jest
               sprawdzanie sum kontrolnych skompresowanego wyjcia z jednego,
               lub wicej programow szybko zmieniajcego si statusu systemu
               operacyjnego. Na przyklad:

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

               Jeli naprawd ci na tym zaley, zobacz modul Math::TrulyRandom w
               CPAN.

               Nie wolaj srand() wielokrotnie, chyba e dokladnie wiesz co i w
               jakim celu robisz. Celem tej funkcji jest zasilenie funkcji
               rand() tak, by rand() zwracal inn sekwencj dla kadego
               uruchomienia programu. Zrob to raz, na samym pocztku programu,
               bo w przeciwnym wypadku nie uzyskasz z rand() liczb losowych!

               Czsto wywolywane programy (takie jak skrypty CGI), ktore jako
               nasionka uywaj po prostu

                   time ^ $$

               mog pa ofiar wlasnoci matematycznej, e

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

               przez jedn trzeci czasu. Wic nie rob tego.

       stat UCHWYTPLIKU

       stat WYRA

       stat    Zwraca 13 elementow tablic, opisujc status pliku--otwartego
               przez UCHWYTPLIKU lub nazwanego przez WYRA. Jeli WYRA jest
               pominite, uywany jest $_. Gdy funkcja zawiedzie, zwraca list
               null. Zazwyczaj jest to uywane nastpujco:

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

               Nie wszystkie z tych pol s obslugiwane na wszystkich rodzajach
               systemow plikow. Oto znaczenia pol:

                 0 dev      numer urzdzenia systemu plikow
                 1 ino      numer inode
                 2 mode     prawa pliku (typ i prawa)
                 3 nlink    liczba twardych dowiza do pliku
                 4 uid      numeryczny UID wlaciciela
                 5 gid      numeryczny GID wlaciciela
                 6 rdev     identyfikator urzdzenia (tylko dla plikow specjalnych)
                 7 size     calkowity rozmiar w bajtach
                 8 atime    ostatni dostp od epoki
                 9 mtime    ostatnia modyfikacja od epoki
                10 ctime    ostatnia zmiana inode od epoki
                11 blksize  preferowany rozmiar bloku dla I/O systemu plikow
                12 blocks   rzeczywista liczba zaalokowanych blokow

               (Epoka nastpila o 00:00 1 stycznia, 1970 GMT.)

               Jeli funkcja dostanie specjalny uchwyt pliku, skladajcy si z
               podkrelenia, to nie jest ona wykonywana, lecz przekazywana jest
               zawarto ostatniego testu pliku. Przyklad:

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

               (Dziala to tylko na maszynach, dla ktorych numer urzdzenia jest
               ujemny dla NFS.)

       study SKALAR

       study   Zajmuje troch czasu, by przestudiowa SKALAR (lub $_, jeli go
               nie podano), przygotowujc si na wiele przeszukiwa wzorcow na
               tym lacuchu, przed jego kolejn modyfikacj. Moe to pozwoli zyska
               na czasie, zalenie od natury i liczby wzorcow, a take od
               rozloenia czstotliwoci znakow w przeszukiwanym lacuchu.
               Najlepiej sprawdzi empirycznie, czy funkcja ta wplywa na szybko
               dodatnio, czy ujemnie. Najwicej zyskaj ptle, szukajce wielu
               krotkich, stalych lacuchow (wlczajc stale czci bardziej
               zloonych wzorcow). Naraz mona mie obslugiwany przez study tylko
               jeden lacuch. Jeli przejdziesz na inny skalar, to poprzedni
               stanie si nieprzestudiowany. (study dziala nastpujco: najpierw
               robiona jest lista powizana dla kadego znaku przeszukiwanego
               lacucha, tak e wiemy na przyklad gdzie znajduj si wszystkie
               znaki 'k'.  W kadym szukanym lacuchu wybierany jest w oparciu o
               statyczne tablice rozkladu najrzadziej wystpujcy znak. Lacuch
               jest poszukiwany w miejscach, gdzie znajduje si ten najrzadszy
               znak.)

               Na przyklad oto ptla, ktora wstawia wpisy tworzce indeks przed
               kad lini, zawierajc okrelony 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;
                   }

               Uycie study spowoduje szukanie /\bfoo\b/ tylko w miejscach $_,
               ktore zawieraj "f", gdy jest to najrzadszy znak. Ogolnie, daje
               to due zyski, poza przypadkami patologicznymi. Jedynym pytaniem
               jest to, czy zachowuje ci to wicej czasu ni zabralo zbudowanie
               powizanej listy.

               Zauwa, e jeli musisz szuka lacuchow, o ktorych nic nie wiesz, a
               do uruchomienia, to moesz zbudowa cal ptl jako lacuch i evalowa
               to, by zapobiec ciglemu rekompilowaniu wzorcow. W polczeniu z
               czynieniem $/ niezdefiniowanym, aby wessa cale pliki jako jeden
               rekord, moe to by bardzo szybkie, czsto szybsze ni
               specjalizowane programy typu fgrep(1). Nastpujcy przyklad
               skanuje list plikow (@files) w poszukiwaniu listy slow (@words)
               i drukuje nazwy plikow, zawierajcych 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 wejcia
                   foreach $file (sort keys(%seen)) {
                       print $file, "\n";
                   }

       sub BLOK

       sub NAZWA

       sub NAZWA BLOK
               Nie jest to prawdziwa funkcja, lecz definicja podprocedury.
               Jeli zawiera tylko NAZW (i przypuszczalnie prototypy), jest to
               tylko deklaracja.  Bez NAZWY jest to deklaracja anonimowej
               funkcji i zwraca warto: referencj CODE zawenia, ktore wlanie
               utworzyle. Dla dalszych szczegolow, zobacz stron podrcznika
               perlref(1).

       substr WYRA,OFFSET,DLUGO

       substr WYRA,OFFSET
               Wyciga z WYRA podlacuch i zwraca go. Pierwszy znak znajduje si
               pod offsetem 0, lub tym, na co ustawile $[ (lecz nie rob tego).
               Jeli OFFSET jest ujemny, rozpoczyna si w tej odlegloci od koca
               lacucha. Jeli DLUGO jest pominita, zwracane jest wszystko, a do
               koca lacucha. Jeli DLUGO jest ujemna, pozostawia tyle znakow z
               koca lacucha.

               Funkcji substr() moesz uy jako lwartoci, w ktorym wypadku WYRA
               musi by lwartoci. Jeli przyznasz co krotszego ni DLUGO, lacuch
               zostanie skrocony, a jeli co dluszego, to lacuch zostanie
               rozcignity. Aby zachowa stal dlugo lacucha, moesz potrzebowa
               dopelni, lub obci wartoci przy uyciu sprintf().

       symlink STARYPLIK,NOWYPLIK
               Tworzy now nazw pliku, dowizan symbolicznie do starej. Po
               sukcesie zwraca 1, w przeciwnym wypadku 0. Na systemach nie
               obslugujcych dowiza symbolicznych, funkcja ta powoduje bld
               krytyczny podczas dzialania. Aby go wychwyci, uyj eval:

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

       syscall LISTA
               Wywoluje wywolanie systemowe, podane jako pierwszy element
               listy, przekazujc reszt elementow jako argumenty wywolania.
               Jeli nie jest to zaimplementowane, powoduje bld krytyczny.
               Argumenty s interpretowane nastpujco: jeli podany argument jest
               numeryczny, przekazywany argument to int. Jeli nie,
               przekazywany jest wskanik do wartoci tekstowej.  Odpowiadasz za
               upewnienie si, e lacuch jest do dlugi, by odebra okrelony
               wynik, ktory moe by do niego zapisany. Jeli twoje argumenty int
               nie s literalami i nie byly nigdy interpretowane w kontekcie
               numerycznym, moesz by zmuszonym doda do nich 0, aby wymusi na
               nich wygld liczbowy.

                   require 'syscall.ph';               # moe by niezbdne h2ph
                   syscall(&SYS_write, fileno(STDOUT), "hi there\n", 9);

               Zauwa, e perl obsluguje przekazywanie do 14 argumentow do
               wywolania systemowego, co w praktyce powinno wystarczy.

       sysopen UCHWYTPLIKU,NAZWAPLIKU,TRYB

       sysopen UCHWYTPLIKU,NAZWAPLIKU,TRYB,PRAWA
               Otwiera plik NAZWAPLIKU i wie go z UCHWYTEMPLIKU. Jeli
               UCHWYTPLIKU jest wyraeniem, to jego warto jest uywana jako
               nazwa rzeczywistego uchwytu pliku. Funkcja ta wola podlegajc
               jej funkcj systemu operacyjnego, open z parametrami NAZWAPLIKU,
               TRYB, PRAWA.

               Prawidlowe wartoci i bity flag parametru TRYB s zalene od
               systemu; s one dostpne przez standardowy modul Fcntl. Jednak z
               przyczyn historycznych, niektore wartoci s uniwersalne; zero
               oznacza tylko dla odczytu, jeden tylko dla zapisu, a dwa dla
               zapisu i odczytu.

               Jeli plik NAZWAPLIKU nie istnieje, a wywolanie open go tworzy
               (zazwyczaj dlatego, e TRYB zawiera flag O_CREAT), to warto PRAW
               okrela prawa nowo utworzonego pliku. Jeli s one pominite,
               uywana jest domylna warto 0666, ktora umoliwia wszystkim odczyt
               i zapis. Warto ta ma sens, zobacz umask.

               Modul IO::File daje bardziej obiektowe podejcie do tych rzeczy.

       sysread UCHWYTPLIKU,SKALAR,DLUGO,OFFSET

       sysread UCHWYTPLIKU,SKALAR,DLUGO
               Probuje odczyta DLUGO bajtow danych do zmiennej SKALAR.  Odczyt
               nastpuje z pliku wskazywanego przez UCHWYTPLIKU, przy uyciu
               wywolania systemowego read(2). Pomija to stdio, wic lczenie tej
               funkcji z innym rodzajami odczytu, z print(), write(), seek(),
               lub tell() moe powodowa problemy. Zwraca ilo odczytanych
               bajtow, lub undef w wypadku bldu. SKALAR bdzie rozcigany tak,
               by pasowal do liczby odczytanych bajtow.

               Aby spowodowa odczyt danych z ktorego miejsca lacucha (ronego
               ni pocztek), mona poda dodatkowo parametr OFFSET. Jeli parametr
               ten jest ujemny, to wskazywana jest pozycja przesunita o tyle
               bajtow w tyl od koca lacucha.  Jeli dodatni offset jest wikszy
               od dlugoci SKALARA, to wynikiem jest wypelnienie do wymaganego
               rozmiaru znakami "\-", a nastpnie doklejenie odczytu.

       sysseek UCHWYTPLIKU,POZYCJA,GDZIE
               Zmienia pozycj UCHWYTUPLIKU przy uyciu wywolania systemowego
               lseek(2). Pomija stdio, wic lczenie tego z odczytami (innymi ni
               sysread()), z print(), write(), seek(), lub tell() moe
               wprowadzi problemy. UCHWYTPLIKU moe by wyraeniem, ktorego warto
               daje nazw uchwytu pliku. Wartoci dla GDZIE to 0 dla ustawienia
               nowej pozycji, 1 dla dodania nowej pozycji do biecej i 2 do
               ustawienia pozycji EOF plus offset. Dla parametru GDZIE mona
               uywa stalych SEEK_SET, SEEK_CUR i SEEK_END z modulu
               IO::Seekable lub POSIX.

               Zwracana jest nowa pozycja, lub warto niezdefiniowana w wypadku
               bldu.  Pozycja zerowa zwracana jest jako lacuch "0 but true";
               tak wic sysseek() zwraca TRUE po sukcesie i FALSE po bldzie,
               lecz wci moesz latwo ustali now pozycj.

       system LISTA
               Robi dokladnie to samo, co "exec LISTA", poza tym, e dokonuje
               przed tym forka i proces rodzicielski czeka, a dziecko dokona
               ywota. Zauwa, e przetwarzanie argumentow roni si, zalenie od
               liczby argumentow. Warto zwracana jest statusem wyjcia
               programu, zwroconym przez wywolanie wait(). Aby uzyska
               rzeczywist warto wyjcia, podziel j przez 256. Zobacz te opis
               exec, znajdujcy si gdzie w tym dokumencie. Nie jest to sposob,
               ktorego naley uywa do przechwytywania wyjcia z komendy, dla
               tego celu uyj zwyklych odwroconych apostrofow (backticks?) lub
               qx//, jak opisano w sekcji `/LACUCH` podrcznika perlop(1).

               Poniewa zarowno 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 powiodl: $?"

               A oto bardziej wyrafinowany przyklad analizowania wartoci
               zwracanej przez system(). Ma to miejsce na systemie unixowym i
               jest robione, aby sprawdzi wszystkie moliwoci, wlcznie z
               sygnalami i zrzutami core.

                   $rc = 0xffff & system @args;
                   printf "system(%s) zwrocil %#04x: ", "@args", $rc;
                   if ($rc == 0) {
                       print "normalne zakoczenie\n";
                   }
                   elsif ($rc == 0xff00) {
                       print "komenda si nie powiodla: $!\n";
                   }
                   elsif ($rc > 0x80) {
                       $rc >>= 8;
                       print "niezerowy status wyjcia $rc\n";
                   }
                   else {
                       print "skoczyl z ";
                       if ($rc &   0x80) {
                           $rc &= ~0x80;
                           print "zrzutem core z ";
                       }
                       print "sygnalem $rc\n"
                   }
                   $ok = ($rc != 0);

       syswrite UCHWYTPLIKU,SKALAR,DLUGO,OFFSET

       syswrite UCHWYTPLIKU,SKALAR,DLUGO
               Probuje zapisa DLUGO bajtow ze SKALARA do pliku podanego przez
               UCHWYTPLIKU przy uyciu wywolania systemowego write(2).  Pomija
               stdio, wic lczenie tego z odczytami (innymi ni sysread()), z
               print(), write(), seek(), lub tell() moe spowodowa problemy.
               Zwraca liczb zapisanych bajtow, lub undef w wypadku bldu. Jeli
               dlugo jest wiksza ni dostpne dane, zapisywanych jest tylko tyle
               danych, ile jest dostpnych.

               Dodatkowo mona poda OFFSET, aby zapisa dane z jakiej czci
               lacucha, ktora nie jest pocztkiem. Ujemna warto offsetu
               nakazuje zapisywanie od miejsca, przesunitego o tyle bajtow od
               koca lacucha.

       tell UCHWYTPLIKU

       tell    Zwraca biec pozycj pliku dla UCHWYTUPLIKU. UCHWYTPLIKU moe by
               wyraeniem, ktorego warto podaje nazw rzeczywistego uchwytu
               pliku. Jeli UCHWYTPLIKU jest pominity, zakladany jest plik, z
               ktorego ostatnio czytano.

       telldir UCHWYTKATALOGU
               Zwraca biec pozycj funkcji readdir() dla UCHWYTUKATALOGU.  Do
               seekdir() mona przekaza warto, kac osignc okrelon pozycj w
               katalogu.

       tie ZMIENNA,NAZWAKLASY,LISTA
               Funkcja ta lczy zmienn z klas pakietu, ktora opisuje jej
               implementacj.  ZMIENNA jest nazw czarowanej zmiennej.
               NAZWAKLASY jest nazw klasy, implementujcej obiekty wlaciwego
               typu. Wszelkie dodatkowe argumenty s przekazywane metodzie
               "new" klasy (czyli TIESCALAR, TIEARRAY, lub TIEHASH).
               Zazwyczaj, argumenty te  wygldaj tak, jak te, ktore s
               przekazywane funkcji dbm_open() z C. Obiekt, zwrocony przez
               metod "new" jest te zwracany przez tie(), co jest przydatne,
               jeli chcesz dosta si do innych metod w NAZWIEKLASY.

               Zauwa, e funkcje takie, jak keys() i valuse() mog zwraca
               wielkie wartoci tablicowe, jeli uy je na duych obiektach,
               takich jak pliki DBM. Lepiej moe by uy funkcji each() i na nich
               iterowa. Przyklad:

                   # 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, implementujca tablic asocjacyjn, powinna mie nastpujce
               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, implementujca zwykl tablic, powinna mie nastpujce
               metody:

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

               Klasa, implementujca skalar, powinna mie nastpujce metody:

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

               W przeciwiestwie do funkcji dbmopen(), funkcja tie() nie uywa,
               lub wymaga dla ciebie modulow (use, require)--musisz o to zadba
               samodzielnie. Zobacz podrcznik DB_File oraz modul Config dla
               interesujcych implementacji tie().

       tied ZMIENNA
               Zwraca referencj do obiektu kryjcego si pod ZMIENN (warto,
               ktora byla pocztkowo zwrocona przez tie(), ktore powizal zmienn
               z pakietem.) Gdy ZMIENNA nie jest powizana, zwracana jest warto
               niezdefiniowana.

       time    Zwraca liczb sekund od pocztku epoki (tj. na MacOs od 00:00:00,
               1 Stycznia, 1904, a od 00:00:00 UTC, 1 Stycznia, 1970 dla
               wikszoci innych systemow).  Wystarczajce do przekazania dla
               gmtime() lub localtime().

       times   Zwraca czteroelementow tablic, podajc w sekundach czasy
               uytkownika i systemu. Wartoci 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,DLUGO

       truncate WYRA,DLUGO
               Skraca plik, otwarty na UCHWYCIEPLIKU lub nazwany przez WYRA do
               podanej dlugoci. Na systemach, gdzie nie jest to
               zaimplementowane, powoduje bld krytyczny.

       uc WYRA

       uc      Zwraca WYRA w duych literach. Jest to funkcja wewntrzna,
               implementujca escape \U na lacuchach ujtych w podwojne
               cudzyslowy.  Szanuje biece ustawienie LC_CTYPE, jeli wlczono
               use locale.  Zobacz podrcznik perllocale(1).

               Jeli WYRA jest pominite, uywa $_.

       ucfirst WYRA

       ucfirst Zwraca WYRA, z pierwszym znakiem zmienionym na du liter. Jest
               to funkcja wewntrzna, implementujca escape \u na lacuchach
               ujtych w cudzyslowy.  Szanuje biece ustawienie LC_CTYPE, jeli
               wlczono use locale.  Zobacz podrcznik perllocale(1).

               If EXPR is omitted, uses $_.

       umask WYRA

       umask   Ustawia umask procesu na WYRA i zwraca warto poprzedni. Jeli
               WYRA jest pominite, po prostu zwraca biec umask. Pamitaj, e
               umaska jest liczb, zazwyczaj podawan osemkowo; nie jest
               lacuchem cyfr osemkowych. Zobacz opis oct, znajdujcy si gdzie w
               tym dokumencie, jeli masz tylko lacuch.

       undef WYRA

       undef   Powoduje, e warto WYRA, ktora musi by lwartoci, staje si
               niezdefiniowana. Uywaj tego tylko na wartociach skalarnych,
               calej tablicy, calej tablicy asocjacyjnej, lub na nazwie
               podprocedury (przy uyciu "&").  (Uywanie tej funkcji w innych
               wypadkach przypuszczalnie nie doprowadzi do takich rezultatow,
               jakich mona by oczekiwa.) Zawsze zwraca warto niezdefiniowan.
               Moesz pomin WYRA--w tym wypadku nic nie jest pozbawiane
               zdefiniowania, lecz mimo to uzyskujesz warto niezdefiniowan,
               ktor moesz np. zwroci z podprocedury, przypisa zmiennej,lub
               przekaza jako parametr. Przyklady:

                   undef $foo;
                   undef $bar{'blurfl'};             # Porownaj 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 zwrocon warto

       unlink LISTA

       unlink  Kasuje list plikow. Zwraca liczb skasowanych plikow.

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

               Uwaga: unlink nie skasuje katalogow, chyba e jeste
               superuytkownikiem i przekazale perlowi flag -U. Nawet gdy te
               warunki s spelnione, bd ostrzeony, e skasowanie katalogu moe
               wywola uszkodzenie systemu plikow.  Zamiast tego uyj rmdir.

               Jeli LISTA jest pominita, uywa $_.

       unpack WZORZEC,WYRA
               Unpack robi odwrotno tego, co pack: pobiera lacuch,
               reprezentujcy struktur i rozwija go na list wartoci, zwracaj
               warto tablicow (w kontekcie skalarnym zwraca tylko pierwsz
               warto tablicy). WZORZEC jest tego samego formatu co dla funkcji
               pack. Oto podprocedura, ktora 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, moesz poprzedzi pola %<liczb>, wskazujc, e chcesz
               <liczba>-bitow sum szesnastkow elementow, zamiast samych
               elementow.  Domylna jest suma 16-bitowa. Na przyklad, nastpujcy
               przyklad oblicza t sam liczb co program sum z Systemu V:

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

               Nastpujcy fragment efektywnie oblicza liczb ustawionych bitow w
               wektorze bitowym:

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

       untie ZMIENNA
               Rozbija powizanie midzy zmienn, a pakietem. Zobacz tie().

       unshift TABLICA,LISTA
               Robi odwrotn rzecz do shift. Lub odwrotn do push, zalenie jak
               na to spojrze. Dokleja list do pocztku tablicy i zwraca now
               liczb elementow.

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

               Zauwa, e LISTA jest doklejana cala, a nie jeden element naraz,
               wic doklejone elementy pozostaj w tej samej kolejnoci. Aby j
               odwroci, uyj reverse.

       use Module LISTA

       use Module

       use Module WERSJA LISTA

       use WERSJA
               Importuje semantyk danego modulu do biecego pakietu. Ogolnie
               aliasuje okrelone podprocedury lub nazwy zmiennych do twojego
               pakietu. Jest to dokladnie rownowane

                   BEGIN { require Module; import Module LIST; }

               poza tym, e Module musi by golym slowem.

               Jeli pierwszy argument use jest liczb, to jest ona traktowana
               jako numer wersji, zamiast nazwa modulu. Jeli wersja
               interpretera perla jest mniejsza ni WERSJA, to wywietlony
               zostanie komunikat o bldzie, a perl natychmiast zakoczy
               dzialanie. Jest to czsto przydatne, jeli chcesz sprawdzi wersj
               perla przed uywaniem modulow bibliotecznych, ktore zmienily si
               w sposob niekompatybilny od czasu starszych wersji perla.
               (staramy si by tak nie bylo.)

               Slowo BEGIN wymusza by require i import zaszly podczas
               kompilacji.  Require zapewnia, e modul bdzie zaladowany do
               pamici, jeli wczeniej nie byl. Import nie jest wbudowany--jest
               to tylko zwykle, statyczne wywolanie metody pakietu "Module"
               aby powiedzie modulowi, by zaimportowal list wlaciwoci do
               pakietu biecego. Modul moe implementowa swoj metod import w
               dowolny sposob, cho wikszo modulow woli wyprowadza swoj metod
               poprzez dziedziczenie z klasy Exporter, zdefiniowanej w module
               Exporter, Zobacz podrcznik Exporter.  Jeli nie ma adnej metody
               importujcej, to bld jest cicho ignorowany. Moe si to w
               przyszlych wersjach zmieni na bld krytyczny.

               Jeli nie chcesz zmieniania swojej przestrzeni nazw, zalcz
               jawnie pust list:

                   use Module ();

               Jest to dokladnie rownowane

                   BEGIN { require Module; }

               Jeli midzy Module, a LISTA jest obecny argument WERSJA, to use
               wywola metod VERSION klasy Module z podan wersj, jako
               argumentem. Domylna metoda VERSION, dziedziczona z klasy
               Universal, zakracze jeli podana wersja jest wiksza ni warto
               zmiennej $Module::VERSION. (Zauwa, e nie ma przecinka po
               WERSJI!)

               Poniewa jest to szeroko otwarty interfejs, mona 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 moduly importuj semantyk do biecego zakresu bloku, w
               przeciwiestwie  do zwyklych modulow, ktore importuj symbole do
               biecego pakietu.

               Istnieje odpowiadajca komenda "no", ktora de-importuje rzeczy
               zaimportowane przez use, np. wywoluje metod unimport Module
               LISTA zamiast import.

                   no integer;
                   no strict 'refs';

               Jeli nie ma metody unimport, wywolanie to koczy si bldem
               krytycznym.

               Dla listy standardowych modulow i pragm, zobacz podrcznik
               perlmod.

       utime LISTA
               Zmienia czasy dostpu i modyfikacji na kadym pliku z listy.
               Pierwsze dwa elementy listy musz by numerycznymi czasami dostpu
               i modyfikacji, dokladnie w tej kolejnoci. Zwraca liczb plikow,
               na ktorych operacja si powiodla. Czas modyfikacji inode jest
               ustawiany na czas biecy. Przyklad komendy "touch":

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

       values HASH
               Zwraca normaln tablic, skladajc si ze wszystkich wartoci
               wymienionej tablicy asocjacyjnej. W kontekcie skalarnym,
               zwracana jest liczba wartoci.  Wartoci s zwracane w do losowej
               kolejnoci, 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 lacuch WYRA jako wektor calkowitych integerow i zwraca
               warto pola bitowego, wskazanego przez OFFSET. BITY podaj liczb
               bitow, ktore s zarezerwowane dla kadego wpisu w wektorze
               bitowym.  Musi to by potga dwojki do 1 do 32. vec moe te by
               przypisany do czego--w tym wypadku potrzebne s nawiasy, aby
               nada wyraeniu wlaciwy priorytet, jak w

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

               Wektory utworzone przez vec() mog te by obslugiwane przez
               operatory logiczne |, & i ^, ktore zalo, e bitowa operacja
               wektorowa jest oczekiwana gdy obydwa operandy s lacuchami.

               Aby przeksztalci wektor bitowy na tablic lacuchow zer i
               jedynek, uyj:

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

               Jeli znasz dokladn dlugo w bitach, moesz poda j zamiast *.

       wait    Czeka, a proces potomny si nie zakoczy i zwraca pid zamknitego
               procesu, lub -1, jeli go nie bylo. Status jest zwracany w $?.

       waitpid PID,FLAGI
               Czeka, a proces potomny si zakoczy i zwraca pid zamknitego
               procesu, lub -1, jeli nie bylo takiego procesu. Status jest
               zwracany w $?.  Jeli powiesz

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

               to moesz dokona nieblokujcego oczekiwania na dowolny proces.
               Nieblokujce oczekiwanie jest dostpne na maszynach, obslugujcych
               albo wywolanie waitpid(2), albo wait4(2). Jednak oczekiwanie na
               konkretny pid z FLAGAMI wartoci 0 jest zaimplementowane
               wszdzie. (Perl emuluje wywolanie systemowe, pamitajc wartoci
               statusu procesow, ktore zakoczyly si, lecz nie byly odczytane
               przez skrypt perla)

       wantarray
               Zwraca TRUE, jeli kontekst obecnie wykonywanej podprocedury
               szuka wartoci listowej. Zwraca FALSE, jeli kontekst szuka
               skalara.  Zwraca warto niezdefiniowan, jeli kontekst nie szuka
               wartoci (void).

                   return unless defined wantarray;    # nie myl o robieniu wicej
                   my @a = complex_calculation();
                   return wantarray ? @a : "@a";

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

               Jeli zainstalowany jest handler $SIG{__WARN__), nie s drukowane
               adne komunikaty. Od handlera zaley obsluga komunikatu, gdy tak
               zadecyduje (np. przekonwertowanie go na die()). Wikszo
               handlerow musi wic wywolywa warn() ponownie, aby wywietli
               komunikat. Zauwa, e jest to bezpieczne i nie spowoduje
               nieskoczonej ptli, gdy haki __WARN__ nie s wolane z niego
               samego.

               Zachowanie to jest troch inne od tego dla $SIG{__DIE__} (ktore
               nie powstrzymywaly tekstu komunikatow, lecz mogly wywola die()
               ponownie, aby je zmieni).

               Uywanie handlerow __WARN__ daje potne narzdzie do wyciszania
               wszystkich ostrzee (nawet tak zwanych obowizkowych). Na
               przyklad:

                   # wywal wszystkie ostrzeenia 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 prosile!
                   # bez ostrzee czasu kompilacji i czasu dzialania przed tym miejscem
                   $DOWARN = 1;

                   # ostrzeenia czasu dzialania s tu wlczone
                   warn "\$foo is alive and $foo!";     # pojawia si

               Zobacz stron perlvar(1) dla szczegolow o ustawianiu wpisow %SIG
               i dla przykladow.

       write UCHWYTPLIKU

       write WYRA

       write   Zapisuje sformatowany rekord (prawdopodobnie wieloliniowy) do
               podanego pliku, uywajc formatu zwizanego z tym plikiem.
               Domylnie format dla pliku jest tym, ktory ma t sam nazw, co
               uchwyt pliku, lecz mona go zmieni z pomoc funkcji select(),
               przypisujc nazw formatu zmiennej $~.

               Pocztek przetwarzania formy jest obslugiwany automatycznie:
               jeli nie ma miejsca na stronie na sformatowany rekord, to
               strona jest przewijana przez wpisanie form feed, nastpnie
               uywany jest specjalny format gory-strony (do formatowania
               naglowka nowej strony), a potem wpisany jest rekord. Domylnie,
               format gory-strony jest nazw uchwytu pliku z dodanym "_TOP",
               lecz mona go ustawi dynamicznie, przyznajc zmiennej $^ nazw
               podczas gdy wybrany (select) jest uchwyt pliku.  Liczba
               pozostajcych linii biecej strony znajduje si w zmiennej $- i
               moe by ustawiona na 0 aby wymusi now stron.

               Jeli UCHWYTPLIKU nie jest podany, wyjcie idzie do biecego
               domylnego kanalu wyjcia, ktorym jest pocztkowo STDOUT, a ktory
               moe by zmieniony operatorem select. Jeli UCHWYTPLIKU jest
               wyraeniem WYRA, to jest ono analizowane, a wynikowy lacuch jest
               uywany do podejrzenia nazwy UCHWYTUPLIKU. Dla dalszych
               informacji o formatach, zobacz stron perlform(1).

               Zauwa, e zapis NIE jest odwrotnoci odczytu. Niestety.

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

INFORMACJE O T/L/LUMACZENIU

       Powysze tlumaczenie pochodzi z nieistniejcego ju Projektu Tlumaczenia
       Manuali i moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
       opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji,
       prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.