v stroki zapuska programmy. Vnimanie! @#ARGV - men'she kolichestva parametrov na 1 t.k. $ARGV[0] eto pervyj parametr (ne imya programmy). @INC Spisok direktorij diska kotorye prosmatrivaet Pel dlya vypolneniya komand do, require ili use. %INC |tot hesh soderzhit imena direktorij dlya imen ispol'zovannyh fajlov komandami do ili require. Klyuch - imya fajla, a znachenie - direktoriya. $ENV{vyrazhenie} Hesh %ENV soderzhit znacheniya peremennyh okruzheniya. Izmenenie etih znachenij vyzyvaet izmenenie okruzheniya dlya processov potomkov. $SIG{vyrazhenie} Hesh %SIG soderzhit imena podprogramm dlya sistemnyh signalov takih kak INT, QUIT, PIPE, ... Znachenie 'DEFAULT' - dlya sistemnoj obrabotki. 'IGNORE' - ignorirovat' dannyj signal.  * Regulyarnye vyrazheniya (shablony) *  V dannoj glave opisyvaetsya sintaksis regulyarnyh vyrazhenij. CHashche vsego v Pel oni ispol'zuyustya v operatorah poiska i zameny takih kak s// m/ operatorah svyazki =~ ili != i t.d. Kak pravilo vse eti operatory imeyut shozhie opcii takie kak: i - ne razlichat' strochnye i zaglavnye bukvy. m - schitat' stroku mnogostrochnoj. s - odnostrochnaya stroka. x - rasshirennyj sintaksis ( ispol'zovanie probelov i kommentariev) Obychno vse eti opcii oboznachayut kak '/x'. Ih mozhno ispol'zovat' dazhe vnutri shablonov, ispol'zuya novuyu konstrukciyu (?...) Regulyarnye vyrazheniya ili shablony (pattern) to zhe samoe chto i regexp procedury v YUnikse. Vyrazheniya i sintaksis zaimstvovan iz svobodno rasprostranyaemyh procedur V8 Genri Spensera (Henry Spencer) tam zhe oni podrobno i opisany. V shablonah ispol'zuyutsya sleduyushchie metasimvoly (simvoly oboznachayushchie gruppy drugih simvolov) chasto nazyvaemyh egrep - standartom: \ - schitat' sleduyushchij metasimvol kak obychnyj simvol. ^ - nachalo stroki . - odin proizvol'nyj simvol. Krome '\n' - konec stroki. $ - konec stroki | - al'ternativa (ili) () - gruppirovka [] - klass simvolov Metasimvoly imeyut modifikatory (pishutsya posle metasimvola): * - povtoryaetsya 0 ili bol'shee chislo raz + - povtoryaetsya 1 ili bol'shee chislo raz ? - 1 ili 0 raz {n} - tochno n raz {n,} - po men'shej mere raz {n,m} - ne menshe n, no i ne bol'she m Vo vse drugih sluchayah figurnye skobki schitayutsya obychnymi (regulyarnymi) simvolami. Takim obrazom '*' ekvivalentna {0,} , '+' - {1,} i '?' - {0,1}. n i m ne mogut byt' bol'she 65536. Po umolchaniyu dejstvie metasimvolov "zhadno" (greedy). Sovpadenie rasprostranyaetsya stol'ko raz skol'ko vozmozhno ne uchityvaya rezul'tat dejstviya sleduyuyushchih metasimvolov. Esli vy hotite "umen'shit' ih appetit" to ispol'zujte simvol '?'. |to ne izmenyaet znachenie metasimvolov prosto umen'shaet rasprostranenie. Takim obrazom: *? - stanet 0 i bolee +? - 1 i bolee ?? - 0 ili 1 raz {n}? - tochno n raz {n,}? - ne men'she n raz {n,m}? - bol'she ili ravno n i men'she m raz SHablony rabotayut tak zhe kak i dvojnye kavychki poetomu v nih mozhno ispol'zovat' `\` - simvoly (bakslesh-simvoly): \t - simvol tabulyacii \n - novaya stroka \r - perevod karetki \A - perevol formata \v - vertikal'naya tabulyaciya \a - zvonok \e - escape \033 - vos'merichnaya zapis' simvola \x1A - shestnadcaterichnaya \c[ - control simvol \l - nizhnij registr sleduyushchego simvola \u - verhnij registr -//- \L - vse simvoly v nizhnem registre do \E \U - v verhnem -//- \E - ogranichitel' smeny registra \Q - otmena dejstviya kak metasimvola Dopolnitel'no v Pel dobavleny sleduyushchie metasimvoly: \w - alfavitno-cifrovoj ili '_' simvol \W - ne alfavitno-cifrovoj ili '_' simvol \s - odin probel \S - odin ne probel \d - odna cifra \D - odna ne cifra Obratite vnimanie chto vse eto "odin" simvol. Dlya oboznacheniya posledovatel'nosti primenyajte modifikatory. Tak: \w+ - slovo \d+ - celoe chislo [+-]?\d+ - celoe so znakom [+-]?\d+\.?\d* - chislo s tochkoj Krome togo sushchestvuyut mnimye metasimvoly. Oboznachayushchie ne sushchestvuyushchie simvoly v meste smeny znacheniya. Takie kak: \b - granica slova \B - ne granica slova \A - nachalo stroki \Z - konec stroki \G - konec dejstviya m//g Granica slova (\b) - eto mnimaya tochka mezhdu simvolami \w i \W. Vnutri klassa simvolov '\b' oboznachaet simvol backspace (stiraniya). Metasimvoly \A i \Z - analogichny '^' i '$' no esli nachalostroki '^' i konec stroki '$' dejstvuyut dlya kazhdoj stroki v mnogostorochnoj stroke to \A i \Z oboznachayut nachalo i konec vsej mnogostorchnoj stroki. Esli vnutri shablona primenyaetsya gruppirovka (kruglye skobki) to nomer podstroki gruppy oboznachaetsya kak '\cifra'. Zamet'te chto za shablonom v predelah vyrazheniya ili bloka eti gruppy oboznachayutsya kak '$cifra'. Krome etogo sushchestvuyut dopolnitel'nye peremennye: $+ - oboznachaet poslednee sovpadenie $& - vse sovpadenie $` - vse do sovpadeniya $' - vse posle sovpadeniya Primer: $s = "Odin 1 dva 2 i tri 3"; if ($s =~ /(\d+)\D+(\d+)/) { print "$1\n"; # Rezul'tat '1' print "$2\n"; # '2' print "$+\n"; # '2' print "$&\n"; # '1 dva 2' print "$`\n"; # 'Odin ' print "$'\n"; # ' i tri 3' } Pel versii 5 soderzhit dopolnitel'nye konstrukcii shablonov: (?#kommentarij) - kommentarij v tele shablona. (?:shablon) - gruppirovka kak i '( )' no bez obratnoj ssylki (?=shablon) - "zaglyadyvanie" vpered. Naprimer /\w+(?=\t)/ sootvetstvuet slovu za kotorym idet tabulyaciya no simvol '\t' ne vklyuchaetsya v rezul'tat. Primer: $s = "1+2-3*4"; if ($s =~ /(\d)(?=-)/) # Naiti cifru za kotoroj stoit '-' { print "$1\n"; # Rezul'tat '2' } else { print "oshibka poiska\n";} (?!shablon) - "zaglyadyvanie" vpered po otricaniyu. Primer: $s = "1+2-3*4"; if ($s =~ /(\d)(?!\+)/) # Naiti cifru za kotoroj ne stoit '+' { print "$1\n"; # Rezul'tat '2' } else { print "oshibka poiska\n";} (?ismx) - "vnutrennie" modifikatory. Udobno primenyat' v shablonah gde naprimer nuzhno vnutri shablona ukazat' modifikator. Pravila regulyarnogo vyrazheniya. (regex) 1. Lyuboj simvol oboznachaet sebya samogo esli eto ne metasimvol. Esli vam nuzhno otmenit' dejstvie metasimvola to postav'te pered nim '\'. 2. Stroka simvolov oboznachaet stroku etih simvolov. 3. Mnozhestvo vozmozhnyh simvolov (klass) zaklyuchaetsya v kvadratnye skobki '[]' eto znachit chto v dannom meste mozhet stoyat' odin iz ukazannyh v skobkah simvol. Esli pervyj simvol v skobkah eto '^' - znachit ne odin iz ukazannyh simvolov ne mozhet stoyat' v dannom meste vyrazheniya. Vnutri klassa mozhno upotreblyat' simvol '-' oboznachayushchij diappazon simvolov. Naprimer a-z odin iz malyh bukv latinskogo alfavita, 0-9 - cifra i t.d. 4. Vse simvoly, vklyuchaya special'nye mozhno oboznachat' s pomoshch'yu '\' kak v yazyke S. 5. Al'ternativnye posledovatel'nosti razdelyayutsya simvolom '|' Zamet'te chto vnutri kvadratnyh skobok eto obychnyj simvol. 6. Vnutri regulyarnogo vyrazheniya mozhno ukazyvat "podshablony" zaklyuchaya ih v kruglye skobki i ssylat'sya na nih kak '\nomer' Pervaya skobka oboznachaetsya kak '\1'.  * Operatory i prioritety *  V Pel associativnost' i prioritetnost' operatorov analogichna yazyku C. Nizhe perechisleny vse operatory v poryadke umen'sheniya prioriteta, v nachale stroki ukazana associativnost'. assoc. operatory ----- --------------------------- levaya termy i levostoronnye spiskovye operatory levaya -> - ++ -- pravaya ** pravaya ! ~ \ unarnye + i - levaya =~ !~ levaya * / % x levaya + - . levaya << >> - imenovannye unarnye operatory - < > <= >= lt gt le ge - == != <=> eq ne cmp levaya & levaya | ^ levaya && levaya || - .. pravaya ?: pravaya = += -= *= i t.d. levaya , => - pravostoronnie spiskovye operatory levaya not levaya and levaya or xor Termy i levostoronnie spiskovye operatory. Lyuboj term imeet samyj vysokij prioritet. K termu otnosyatsya peremennye, kavychki i ih operatory, arifmeticheskie i logicheskie vyrazheniya v skobkah, lyubye funkcii s parametrami v skobkah. Fakticheski takih funkcij net tak kak eto prosto unarnye i spiskovye operatory prosto oni vedut sebya podobno funkciyam s parametrami v skobkah. Podrobno smotri glavu "Funkcii". Esli posle lyubogo spikovogo operatora ( print(), i t.d.) ili unarnogo operatora (chdir(), i t.d.) sleduet levaya kruglaya skobka, to operatory vnutri skobok imeyut naivysshij prioritet. Tak zhe kak i obychnye funkcii. Esli skobki otsutsvuyut to prioritet spiskovyh operatorov ili naivysshij ili naimen'shij v otnoshenii operatorov sprava ili sleva ot nego. Naprimer: @i = ('a ','b ', print 'c ', 'd '); print "\n",@i,"\n"; Rezul'tat: c d a b 1 Zdes' my imeem spiskovyj operator print. Dlya zapyatyh sleva ot nego on imeet naimen'shij prioritet, no povyshaet prioritet pravoj zapyatoj. Poetomu pravaya zapyataya vosprinimaetsya kak parametr dlya print i pechataetsya 'c d' a levaya prosto zapisyvaet kod zaversheniya operacii v massiv @i i poslednij print pokazyvaet eto. Operator '->' Tak zhe kak v S ili S++ eto infiksnyj operator pereadressacii. Esli sprava ot nego stoit [...] ili {...} vyrazhenie, to pravaya chast' mozhet byt' neposredstvennoj ili simvolicheskoj ssylkoj na massiv ili hesh. V protivnom sluchae pravaya storona eto metod ili prostoj skalyar soderzhashchij imya metoda, a pravaya ili ob容kt ili imya klassa. Podrobno smotri glavu "Klassy". Operatory ++ (inkrement) i -- (dekrement). |ti operatory rabotayut tak zhe kak i v S. Esli operator stoit pered peremennoj to znachenie peremennoj izmenyaetsya na 1 i poluchennoj znachenie ispol'zuetsya. Esli posle peremennoj to ee velichina izmenyaetsya posle primeneniya. Upotreblenie inkrementa k strokovym peremennym v Pel imeet odnu osobennost'. Kazhdyj simvol ostaetsya v svoem klasse (bol'shie, malye, cifry) i uchityvaetsya perenos predydushchego simvola. Takim obrazom strokovye peremennye s ciframi rabotayut kak chislovye peremennye. Primer: print ++($i = "09"); # Rezul'tat "10" print ++($i = "a9"); # "b0" print ++($i = "az"); # "ba" print ++($i = "aZ"); # "bA" Operator ** (vozvedenie v stepen') Primer: print 4**2 # Rezul'tat 16 print -4**2 # Rezul'tat -16 t.e. -(4**2) Unarnye operatory. '!' - logicheskoe otricanie '-' - arifmeticheskij minus '~' - pobitnaya inversiya (dopolnenie do 1) '+' - arifmeticheskij plyus '\' - poluchenie ssylki na peremennuyu (kak & v S) Operatory "privyazki" =~ i !~ . |ti "neobychnye" ya by dazhe skazal original'nye operatory imeyut ochen' shirokoe primenenie v Pel. Mozhno dazhe nazvat' ih "original'nym" resheniem. Operator =~ logicheski svyazyvaet levuyu chast' vyrazheniya s paternom (pattern - obrazec, shablon, model') v pravoj. Po umolchaniyu poisk ili izmenenie po paternu vypolnyaetsya v peremennoj $_ Operatory privyazki pozvolyayut delat' eto s lyuboj peremennoj ukazannoj v levoj chasti. Logicheskim rezul'tatom budet uspeh operacii. Esli v pravoj chasti vmesto paterna prisutsvuet vyrazhenie, to rezul'tat etogo vyrazheniya vosprinimaetsya kak patern. Odnako eto ne ochen' effektivno t.k. patern budet kompilirovat'sya vo vremya ispolneniya programmy chto zametno snizit bystrodejstvie. Operator !~ analogichen =~ tol'ko rezul'tat sovpadeniya inventiruetsya (logicheskoe "net"). Podrobnoe primenenie etih operatorov privoditsya v glave "Paterny". Mul'tiplikativnye operatory. '*' - arifmeticheskoe umnozhenie '/' - arifmeticheskoe delenie '%' - arifmeticheskij modul' 'x' - operator povtoreniya V skalyarnom kontekste vozvrashchaet stroku levoj chasti povtorennuyu velichinoj ukazannoj v pravoj chasti. V spiskovom kontekste, esli v levoj chasti spisok v kruglyh skobkah - povtorennyj spisok. Primer: print '*' x 5; # Rezul'tat '*****' print (1,2) x 3; # Rezul'tat 121212 Additivnye operatory. '+' - arifmeticheskij plyus '-' - arifmeticheskij minus '.' - konkatenaciya (ob容dinenie) strok Operatory sdviga. '<<' - Sdvigaet pobitno vlevo znachenie vyrazheniya v levoj chasti na kolichestvo bit ukazannoe v pravoj. '>>' - Sdvigaet pobitno vpravo znachenie vyrazheniya v levoj chasti na kolichestvo bit ukazannoe v pravoj. Imenovannye unarnye operatory. Fakticheski eto funkcii s odnim argumentom. Kruglye skobki mozhno opuskat'. Operatory otnoshenij. '<' - arifmeticheskoe men'she '>' - arifmeticheskoe bol'she '<=' - arifmeticheskoe men'she ili ravno '>=' - arifmeticheskoe bol'she ili ravno 'lt' - strokovoe men'she 'gt' - strokovoe bol'she 'le' - strokovoe men'she ili ravno 'ge' - strokovoe bol'she ili ravno Operatory ravenstva. '==' rezul'tat true esli levaya chast' ravna pravoj (ravno) '!=' - ne ravno '<=>' - -1 esli levaya chast' men'she pravoj, 0 esli ravna, 1 esli bol'she. 'eq' - strokovoe ravno 'ne' - strokovoe ne ravno 'cmp' - kak i '<=>' primenitel'no k strokam Operatory raboty s bitami. '&' - pobitnoe AND '|' - pobitnoe OR '^' - pobitnoe XOR Logicheskie operatory && (AND) i || (OR). '&&' - esli levoe vyrazhenie vozvrashchaet false, pravoe ne vypolnyaetsya. '||' - esli levoe vyrazhenie vozvrashchaet true, pravoe ne vypolnyaetsya. Otlichie ot podobnyh operatorov v S zaklyuchaetsya v tom, chto v S vozrashchaemoe znachenie libo 0 libo 1. Togda kak v Pel vozvrashchaetsya rezul'tat vyrazheniya. Operator diapazona '..' Rezul'tat raboty dannogo operatora zavisit ot konteksta. V spiskovom kontekste rezul'tat est' spisok s elementami. Pervyj element kotorogo eto levoe vyrazhenie i poslednee - pravoe. Znachenie kazhdogo elementa vnutri spiska uvelichivaetsya na 1. Dannyj operator udoben dlya nebol'shih ciklov t.k. pamyat' otvoditsya dlya vsego spiska celikom. Poetomu bud'te vnimatel'ny i ne zadavajte slishkom bol'shoj diappazon. Primer: for $i (1..4) { print "$i "; } Rezul'tat: 1 2 3 4 V skalyarnom kontekste rezul'tat - logicheskoe znachenie. Kazhdaya '..' operaciya ustanavlivaet svoe sobstvennoe sostoyanie. |to false do teh por poka levyj operand false. Kak tol'ko levyj operand stal true rezul'tat - true do teh poka pravyj true, posle chego rezul'tat opyat' - false. Esli vy ne hotite proveryat' pravyj operand to ispol'zujte operator '...'. Pravyj operand ne vychislyaetsya poka rezul'tat false i levyj operand ne vychislyaetsya poka poka rezul'tat true. Prioritetnost' operatora '..' nemnogo nizhe chem '&&' i '||'. Vozvrashchaemoe znachenie esli flase - nulevaya stroka, esli true - poryadkovyj nomer nachinaya s 1. Poryadkovyj nomer obnulyaetsya dlya kazhdogo novogo diappazona. Poslednij poryadkovyj nomer dobavlyaetsya strokoj "E0" kotoraya ne izmenyaet ego znachenie no pozvolyaet fiksirovat' poslednee znachenie. Primer: @alfavit = ('a'..'z'); # Massiv malyh bukv latinskogo alfavita @cifry = (0..9); # Massiv cifr Uslovnyj operator '?:' |tot operator rabotaet tak zhe kak i v S. Esli vyrazhenie pered '?' istinno to vypolnyaetsya argument pered ':' - inache posle ':'. Primer: $i = 1; $i > 1 ? print "bol'she" : print "men'she"; Rezul'tat: men'she Operatory prisvaivaniya. '=' - obychnyj operator "prisvoit'" pravoe znachenie peremennoj sleva Vsya eta gruppa operatorov podobna operatoram S t.e. $i += 2; ekvivalentno $i = $i + 2; Ostal'nye operatory etoj gruppy rabotayut analogichno. Dopustimy sleduyushchie operatory: **= += -= .= *= /= %= x= &= |= ^= <<= >>= &&= ||= Prioritet vsej etoj gruppy operatorov raven prioritetu '='. Operator ',' (zapyataya) V skalyarnom kontekste vypolnyaetsya levyj argument, rezul'tat ignoriruetsya zatem pravyj i ego rezul'tat est' rezul'tat dejstviya operatora. V spiskovom kontekste eto razdelitel' elementov spiska kotoryj vklyuchaet ukazannye elementy v spisok. Operator logicheskoe not (oricanie). Unarnyj not vozvrashchaet protivopolozhnoe znachenie poluchennoe vyrazheniem sprava. On ekvivalenten '!' no imeet ochen' nizkij prioritet. Operator logicheskoe and (I). Vypolnyaet logicheskuyu kon座unkciyu dvuh vyrazhenij. |kvivalenten '&&' no imeet ochen' nizkij prioritet i "kratkost'" dejstviya. t.e esli levoe vyrazhenie ravno false - levoe ne vypolnyaetsya. Logicheskoe or (ILI). Vypolnyaet logicheskuyu diz座unkciyu dvuh vyrazhenij. |kvivalenten '||' no imeet ochen' nizkij prioritet i "kratkost'" dejstviya. t.e esli levoe vyrazhenie ravno true - levoe ne vypolnyaetsya. Logicheskoe xor (isklyuchayushchee ILI). Vypolnyaet logicheskoe isklyuchayushchie ili. Vsegda vypolnyayutsya oba pravoe i levoe vyrazhenie. S operatory otsutstvuyushchie v Pel. V Pel otsutsvuyut operatory yazyka S takie kak: unarnoe & - poluchit' adres. Dlya etogo primenyaetsya '\'. unarnyj * - pereadresaciya. (TYPE) - sovmeshchenie tipov. Operatory ogranichiteli strok. Obychno ogranichiteli strok my schitaem literalami, no v Pel eto operatory vypolnyayushchie raznogo roda interpolyaciyu i poisk po shablonu. Vy mozhete sami zadavat' udobnye dlya vas ogranichiteli. V sleduyushchej tablice priveden polnyj perechen' variantov. Figurnye skobki '{}' oboznachayut lyuboj simvol ispol'zuemyj dlya ogranichitelya. V sluchae ispol'zovaniya skobok (kruglyh '()', kvadratnyh '[]', figurnyh '{}', uglovyh '<>') v nachale stavitsya otkryvayushchayasya skobka a v konce zakryvayushchaya. Po umolchaniyu Polnoe Funkciya Interpolyaciya ---------- ------ ------------ ---- '' q{} Literal net "" qq{} Literal da `` qx{} Komanda da qw{} Spisok slov net // m{} SHablon da s{}{} Podstanovka da tr{}{} Translyaciya net V strokah dopuskayushchih interpolyaciyu imena peremennyh nachinayushchiesya s simvolov '$' ili '@' - interpoliruyutsya t.e. v stroku vstavlyaetsya znachenie stroki ili massiva. Dannye posledovatel'nosti simvolov imeyut special'noe znachenie: \t simvol tabulyacii \n simvol novoj stroki \r vozvrat \f perevod formata \v vertikal'naya tabulyaciya \b backspace (zaboj) \a zvonok \e escape \034 vos'merichnyj simvol \x1a shest'nadcaterichnyj simvol \c[ simvol upravleniya \l nizhnij registr sleduyushchego simvola \u verhnij registr sleduyushchego simvola \L nizhnij registr dlya vseh simvolov do \E \U verhnij registr dlya vseh simvolov do \E \E ogranichitel' smeny registra \Q otmena dejstviya metasimvolov do \E SHablony interpoliruyutsya kak regulyarnye vyrazheniya. |to vypolnyaetsya vtorym prohodom posle interpolyacii peremennyh poetomu v shablony mozhno vstavlyat' peremennye. Dlya otmeny interpolyacii ispol'zujte '\Q'. Esli vy primenyaete vlozhennye ogranichiteli to vnutrennie ogranichiteli rabotat' ne budut. ?PATERN? Dejstvie etogo operatora analogichno /shablon/ no vypolnyaetsya do pervogo sovpadeniya. |to udobno dlya poiska nalichiya kakoj nibud' stroki v odnom ili mnozhestve fajlov. |to ne ochen' udachnyj operator poetomu v sleduyushchih versiyah Pel ego vozmozhno ne budet. m/PATERN/gimosx /PATERN/gimosx Poisk v stroke po paternu (shablonu). V skalyarnom kontekste vozvrashchaet logicheskoe znachenie true (1) ili false (''). Esli stroka ne ukazana s pomoshch'yu operatorov '=~' ili '!~' poisk vedetsya v stroke $_ Opcii: g - Global'nyj poisk. Poisk vseh vhozhdenij. i - Sravnenie ne zavisit ot registra (verhnij ili nizhnij) m - Stroka mnogostrochna. o - odnoprohodnaya kompilyaciya s - odnostrochnaya stroka x - ispol'zueyutsya rasshirennye regulyarnye vyrazheniya. Esli '/' - ogranichitel' to nachal'noe 'm' mozhno opustit'. S pomoshch'yu nego v kachestve ogranichitelya mozhet byt' lyuboj simvol krome probela. PATTERN mozhet soderzhat' peremennye kotorye budut interpolirovat'sya (perekompilirovat'sya) kazhdyj raz v moment vychisleniya. Peremennye $) i $| ne interpoliruyutsya. Esli vy hotite chto by takoj shablon interpolirovalsya odin raz - dobav'te /o. |to neobhodimo delat' v ciklah poiska dlya uvelicheniya bystrodejstviya odnako esli vy izmenite znachenie peremennoj Pel etogo dazhe ne zametit. Esli PATERN - nulevaya stroka to ispol'zuetsya poslednee regulyarnoe vyrazhenie. V skalyarnom kontekste vozvrashchaetsya spisok elementy kotorogo rezul'taty vypolneniya vyrazhenij v skobkah paterna ($1, $2, $3...). Obratite vnimanie chto pervyj element $1. Primer: $a = "/usr/local/perl/perl.bin"; # Analiziruemaya stroka Cel': Sozdat' massiv @dirs s imenami direktorij. Reshenie: Samyj prostoj sposob vospol'zovat'sya split('\/') no v kachestve primera ispol'zuem skobki. @dirs =~ m[/(\w*)/(\w*)/(\w*)/(\w*)] Zdes' 'm[' - ispol'zovat' kvadratnye skobki kak ogranichiteli. (\w*) - shablon alfavitnocifrovoj posledovatel'nosti. V rezul'tate @dirs raven ('usr', 'local', 'perl') q/stroka/ 'stroka' Stroka literalov. Ne interpoliruetsya. Vnutri stroki razreshaetsya ispol'zovat' \' ili \\ dlya oboznacheniya simvolov ' i \ . Primer: print q#Privet.#; # Rezul'tat Privet. print 'O\'K'; # O'K qq/stroka/ "stroka" Interpoliruemaya stroka. Primer: $var = 13; print "\$var = $var"; Rezul'tat: $var = 13 qx/stroka/ `stroka` Snachalo stroka interpoliruetsya a potom vypolnyaetsya kak sistemnaya komanda. Primer: print `date`; Rezul'tat: Thu Nov 14 13:36:49 MSK 1996 qw/stroka/ Vozvrashchaet spisok elementy kotorogo - slova stroki razdelennye probelami. Primer: print qw/Postroemsya i spasemsya!/; # ('Postroemsya','i','spasemsya!') Rezul'tat: Postroemsyaispasemsya! CHasto primenyaetsya kak: use POSIX qw( setlocale localeconv ) @EXPORT = qw( proc1 var ); s/shablon/podstroka/egimosx Poisk po shablonu i v sluchae uspeha zamena podstrokoj. Vozvrashchaet kolichestvo proizvedennyh podstanovok inache false (0). Esli stroka v kotoroj vedestya poisk ne ukazana (operatory =~ ili != ) to ispol'zuetsya peremennaya $_ . Esli v kachestve radelitelya '/' isrol'zovat' odinarnuyu kavychku (') to interpolyacii ne budet inache mozhno primenyat' peremennye v shablone ili podstroke. Opcii: e - Rasmmatrivat' pravuyu chast' kak vyrazhenie. g - Global'nyj poisk. i - Bez razlichiya registra bukv m - mnogostochnaya peremennaya o - kompilirovat' shablon odin raz s - odnostrochnaya peremennaya x - rasshirennoe regulyarnoe vyrazhenie Razdelitel' '/' mozhno zamenit' na lyuboj alfavitno-cifrovoj simvol krome probela. Primer: $var = "12345"; # ishodnaya stroka $var =~ s/1/0/; # Zamenit' '1' na '0'. Rezul'tat 02345 $var =~ s(5)(.); # Zamenit' '5' na '.' Rezul'tat 0234. Zdes' v kachestve razdelitelya primeneny skobki poetomu podstroka vzyata v dve skobki. $var =~ s/\d*/kalambur/; Zamenit' vse cifry. Rezul'tat 'kalambur.' $var =~ s/a/o/g; # Zamenit' vse 'a' na 'o'. Rezul'tat 'kolombur.' $var = "12 34"; # Novoe znachenie $var =~ s/(\d\d) (\d\d)/$2 $1/; # Pomenyat' mestami chisla. Rezul'tat '34 12'. tr/tablica1/tablica2/cds y/tablica1/tablica2/cds Zamena vseh simvolov iz "tablica1" na sootvetsvuyushchij simvol iz "tablica2". Rezul'tat - kolichestvo zamen ili stiranij. Bez operatora =~ ili != operaciya vypolnyaetsya s strokoj $_. Dlya sovmestimosti s programmoj sed vmesto tr mozhno pisat' 'y'. Opcii: c - dopolnenie "tablica1" d - steret' najdennye no ne zamenennye simvoly. s - "zzhat'" povtoryayushchiesya zamenennye simvoly. Esli ukazana opciya /d tablica2 vsegda interpretiruetsya kak polozheno. Drugimi slovami esli tablica2 koroche chem tablica1 to simvol iz tablicy1 interpretiruetsya vsegda. Esli tablica2 - null to vse simvoly stroki ostayutsya ne izmennennye. |to udobno dlya podscheta kolichestva sivolov v stroke opredelennogo klassa ili dlya szhatiya povtoryayushchihsya simvolov naprimer probelov. Primer: $s = "hello"; # Ishodnaya stroka $s =~ tr/a-z/A-Z/; # Zamenit' malye bukvy na bol'shie. Rezul'tat # 'HELLO' $s = 'Hel....lo'; $s =~ tr/a-zA-z/_/c; # Zamenit' vse ne bukvy na '_' # Rezul'tat 'Hel____lo' $s =~ tr/_/ /s; # Zamenit' '_' na ' ' i szhat'. # Rezul'tat 'Hel lo' $s =~ tr/a-zA-Z /a-zA-Z/d; # Udalit' vse ne bukvy. Rezul'tat 'Hello' Esli odin i tot zhe simvol neskol'ko raz ukazan v tablice1 to primenyaetsya tol'ko pervaya zamena. Operatory vvoda-vyvoda. V Pel sushchestvuet neskol'ko operatorov vvoda-vyvoda. Pervyj eto skobki iz simvola '`' - akcenta. Stroka v etih skobkah vosprinimaetsya kak sistemnaya komanda i rezul'tat ee dejstviya vozvrashchaetsya kak "psevdo" literal. V skalyarnom kontekste eto stroka soderzhashchaya ves' rezul'tat, a v spiskovom - spisok elementy kotorogo - stroki rezul'tata. Status vypolnenoj komandy hranitsya v peremennoj $? . Sleduyushchaya komanda vvoda vyvoda vygledit kak '<fajl>'. Vychislenie <fajl> privodit k chteniyu stroki iz fajla. Obratite vnimanie chto 'fajl' zdes' ne imya fajla a ukazatel' fajla kotoryj sozdaetsya funkciej open(). V skalyarnom kontekste chitaetsya odna stroka vmeste s simvolom '\n' - perevoda stroki, a v spiskovom ves' fajl chitaetsya v spisok elementy kotorogo sut' stroki fajla. V sluchae obnaruzheniya konca fajla rezul'tat operatora ne opredelen i vosprinimaetsya kak false. Esli ne ukazana peremennaya rezul'tata to po umolchaniyu eto $_. Ukazatel' fajla po umolchaniyu STDIN - standartnyj vvod. Primer: while(<>) { print; }; # Prochitat' i vyvesti ves' fajl STDIN U operatora '<>' est' odna otlichitel'naya osobennost'. Esli v komandnoj stroke net nikakih argumentov to chitaetsya standartnyj vvod, esli est' argumenty to oni schitayutsya imenami fajlov kotorye posledovatel'no chitayutsya. Esli v uglovyh skobkah zapisana peremennaya to soderzhimoe etoj peremennoj schitaetsya imenem ukazatelya fajla ili ssylkoj na ukazatel' fajla. Esli takogo ukazatelya ne sushchestvuet to soderzhimoe peremennoj vosprinimaetsya kak shablon imen fajlov i rezul'tat - imena fajlov na diske podhodyashchih po shablonu. Primer: while(<*.pl>) { print;}; # To zhe chto i ls *.pl @files = <*>; # Massiv @files soderzhit imena fajlov v direktorii no luchshe sdelat': @files = glob("*"); t.k. vnutri skobok mozhno ispol'zovat' peremennye. Sliyanie konstant. Kak i S Pel vypolnyaet vozmozhnye vychisleniya v period kompilyacii. Tak podstanovka simvolov posle '\' , operaciya konkatenacii strok, arifmeticheskie vyrazheniya soderzhashchie tol'ko odni konstanty, vse eto delaetsya v moment kompilyacii chto sushchestvenno uvelichivaet skorost' vypolneniya programmy. Celochislennaya arifmetika. Po umolchaniyu Pel vypolnyaet arifmetiku s plavayushchej zapyatoj, no esli vy ukazhete: use integer; to kompilyator budet ispol'zovat' celochislennuyu arifmetiku do konca tekushchego bloka, hotya vlozhennyj blok mozhet eto i otmenit' v svoih predelah s pomoshch'yu: no integer;  * Vstroennye funkcii *  Vstroennye funkcii ispol'zuyutsya kak termy vyrazhenij i podrazdelyayutsya na dve kategorii: spiskovye operatory i unarnye operatory. |to vliyaet na ih prioritet po otnosheniyu k operatoru ',' - zapyataya. Spiskovye operatory mogut iment' mnozhestvo (spisok) argumentov, a unarnye tol'ko odin. Takim obrazom zapyataya zavershaet argumenty unarnogo operatora i razdelyaet argumenty spiskovogo. Argument unarnogo operatora vosprinimaetsya obychno v skalyarnom kontekste a spiskovogo kak v skalyarnom tak i spiskovom prichem skalyarnye argumenty idut pervymi. V dal'neshem spiskovye argumenty my budem oboznachat' slovom 'LIST' eto znachit chto funkciya imeet spisok argumentov razdelennyh zapyatoj. Argumenty funkcij mozhno zaklyuchat' v kruglye skobki i takim obrazom oboznachat' chto "eto funkciya" i prioritet ne imeet znacheniya inache eto spiskovyj ili unarnyj operator s opredelennym fiksirovannym prioritetom. Probel posle imeni funkcii i skobkoj znacheniya ne imeet. Poetomu bud'te vnimatel'ny! Primer: print 1 + 2 + 3; # rezul'tat 6 print(1+2)+3; # rezul'tat 3 print (1+2)+3; # opyat' 3 print (1+2+3); # 6 Esli funkciya vozvrashchaet rezul'tat kak v skalyarnom tak i v spiskovom kontekste to kod vyhoda po oshibke - skalyar c neopredelennym znacheniem ili pustoj spisok. Zapomnite pravilo: Ne sushchestvuet obshchego pravila preobrazovaniya spiska v skalyar! Kazhdyj operator i funkciya imeyut svoj vid znacheniya v skalyarnom kotekste. Dlya odnih eto kolichestvo elementov iz skalyarnogo konteksta. Dlya drugih pervyj element spiska ili poslednij ili kolichestvo uspeshnyh operacij. Kazhdyj svoe esli vy special'no ne ukazyvaete. Operator '-X'. -X ukazatel' fajla -X vyrazhenie -X Proverka fajla, gde 'X' odno iz nizhe opisannyh znachenij. |to unarnyj operator s odnim argumentom - libo imenem fajla libo ukazatelem fajla. Proveryaet odno iz uslovij. Esli argument ne ukazan to beretsya znachenie peremennoj $_. Dlya klyucha -t STDIN. Rezul'tat 1 esli true i '' esli false ili neopredelennoe znachenie esli fajl ne najden. Nesmotrya na strannyj vid eto unarnyj operator s sootvetsvuyushchim prioritetom. Argument mozhno zaklyuchat' v kruglye skobki. 'X' imeet sleduyushchie znacheniya: -r Fajl razreshen na chtenie effektivnym uid/gid -w na zapis' -//- -x ispolnenie -//- -o prinadlezhit effektivnomu uid (identifikator pol'zovatelya) -R Fajl razreshen na chtenie real'nym uid/gid -W na zapis' -//- -X ispolnenie -//- -O prinadlezhit real'nomu uid -e fajl sushchestvuet -z pustoj -s ne pustoj -f obychnyj tekst -d direktoriya -l simvolicheskaya ssylka -p pipes (konvejer) -S socket (gnezdo) -b special'noe blochnoe ustrojstvo -c -//- simvol'noe -//- -t ukazatel' na ust-vo tty -u ustanovlen bit setuid -g -//- setgid -k -//- sticky -T tekstovoj fajl -B dvoichnyj -M "vozrast" fajla v dnyah na moment starta skripta -A dnej s poslednego chteniya -C dnej s poslednej modifikacii inode abs vyrazhenie Absolyutnoe znachenie vyrazheniya accept NEWSOCKET, GENERICSOCKET Okryt' novyj sokit po vneshnemu zaprosu. Analogichno sistemnomu vyzovu accept(). Vozvrashchaet adres ili false v sluchae neudachi. alarm sekundy Poslat' signal SIGALARM tekushchimu processu po istechenii ukazannogo promezhutka vremeni. Ne dopustimo delat' neskol'ko vyzovov odnovremenno v odnom promezhutke vremeni. Vozvrashchaet ostatok vremeni predydushchego schetchika. atan2 Y, X Arktanges otnosheniya Y k X v predelah ot -pi do +pi. bind sokit, imya Naznachit' setevoj adres sokitu. Podobno sistemnomu vyzovu bind. Vozvrashchaet true v sluchae uspeha i false inache. Imya - paketnyj adres sokita. binmode fajl Otkryt' fajl dlya dvoichnogo (binary) rezhima dostupa. V obychnom rezhime pri vvode simvoly CR LF transliruyutsya v LF, a pri vyvode LF transliruetsya v CR LF. bless ssylka, klass bless ssylka Dannaya funkciya opredelyaet chto ob容kt ukazannyj ssylkoj prinadlezhit klassu. Esli klass ne ukazan to on otnositsya k tekushchemu klassu. Obychno eto poslednij operator v konstruktore ob容kta. Neobhodimo obyazatel'no ukazyvat' imya klassa esli opredelyaemyj ob容kt mozhet nasledovat'sya klassom-potomkom. caller vyrazhenie caller Vozvrashchaet kontekst vyzova tekushchej podprogrammy. V skalyarnom kontekste true esli eto podprogramma ili procedura vyzvannaya operatorami eval() ili require() i false - inache. V spiskovom eto spisok ($package, $filename, $line) gde $package - imya paketa $filename - imya fajla paketa $line - nomer stroki otkuda byl sdelan vyzov. Esli ukazano vyrazhenie to vozvrashchaetsya spisok: ($package, $filename, $line, $subroutine, $hasargs, $wantargs) Vyrazhenie opredelyaet "glubinu" vlozhennosti prosmotra steka vyzovov. $subroutine - imya podprogrammy $hasargs - imeyushchiesya argumenty $wantargs - neobhodimye argumenty Primenenie dannoj funkcii v DB pakete vozvrashchaet bolee detal'nuyu informaciyu. K spisku argumentov dobavlyaetsya spisok @DB::args. chdir vyrazhenie Perejti v direktoriyu ukazannuyu vyrazheniem. Esli vyrazhenie otsutsvuet to perejti v "domashniyu" direktoriyu. Vozvrashchaet true v sluchae uspeha i false - neudachi. chmod spisok Izmenit' prava dostupa k fajlam ukazannym v spiske. Pervyj element v spiske - chislovoe ,obychno vos'merichnoe znachenie prav. Vozvrashchaet kolichestvo fajlov kotorym byli izmeneny prava. Primer: chmod 0666 'f1', 'f2', 'f3'; chomp peremennaya chomp spisok chomp Udalyaet v konce stroki simvol ukazannyj peremennoj $/. Obychno eto 'LF'. Vozvrashchaet kolichestvo udalennyh simvolov. Esli peremennaya ne ukazana to ispol'zuetsya peremennaya $_. Esli ukazan spisok to obrabatyvaetsya kazhdaya stroka spiska i vozvrashchaetsya obshchee kolichestvo udalennyh simvolov. chop peremennaya chop spisok chop Polnost'yu analogichno funkcii chomp no vsegda udalyaet poslednij simvol stroki. chown spisok Izmenit' "vladel'ca" i "gruppu" fajlov spiska. Pervyj element - nomer novogo vladel'ca, vtoroj nomer novoj gruppy a dalee spisok fajlov. V bol'shinstve YUniks-sistem vy ne smozhete smenit' vladel'ca esli vy ne superpol'zovatel', no mozhete izmenit' gruppu esli eto odna iz vashih "vtorichnyh" grupp. chr chmslo Vozvrashchaet simvol s ukazannym kodom kodirovki. chroot direktoriya Sdelat' "kornevoj" ukazannuyu direktoriyu. "Kornevaya" - znachit vnutri programmy na nee mozhno ssylat'sya kak '/'. close fajl Zakryt' otkrytyj fajl ili potok. Mozhno ne ispol'zovat' esli odin i tot zhe fajl otkryvaetsya povtortno t.k. on budet avtomaticheski zakryvat'sya novym vyzovom open(). closedir direktoriya Zakryt' direktoriyu otkrytuyu funkciej opendir(). connect sokit, imya Svyazat'sya s udalennym sokitom. Dannaya funkciya podobna sistemnomu vyzovu connect(). Vozvrashchaet true v sluchae uspeha i false pri oshibke. cos vyrazhenie Kosinus vyrazheniya v radianah. crypt tekst, salt SHifraciya tekta. Analogichno sistemnomu crypt(). dbmclose hesh Zakryvaet svyaz' mezhdu hesh i bazoj dannyh. dbmopen hesh, baza, rezhim Associirovat' ukazannyj hesh i bazu v opredelennom rezhime. Delo v tom chto v Pel realizovan ochen' udobnyj mehanizm raboty s bazami dannyh tipa dbm, ndbm, sbdm, gdbm i Berkeley DB. Dlya etogo nuzhno svyazat' (otkryt') bazu pod imenem hesha. Vsya rabota s zapisyami bazy vypolnyaetsya tak budto eto obychnyj hesh (associativnyj massiv). Bolee podrobno smotrite opisanie funkcii AnyDBM(). define vyrazhenie Vozvrashchaet true esli znachenie opredeleno (sushchestvuet) i false esli net. Mnogie operacii zavershayutsya ne opredelennym znacheniem, naprimer chtenie posle konca fajla, ispol'zovanie ne opredelennyh peremennyh, sistemnye oshibki i t.d. Dannaya funkciya pozvolyaet razlichat' nulevoe i ne opredelennye znacheniya, opredelennost' ili ne opredelennost' funkcij ili ssylok. Pri ispol'zovanii opredelennosti klyucha v heshe ona vozvrashchaet opredelen dannyj klyuch ili net no ne sushchestvuet on ili net. delete vyrazhenie Udalit' znachenie iz hesha. Vozvrashchaet udalyaemoe znachenie ili ne opredelennost' esli ni chego ne udalyaetsya. Udalenie iz massiva okruzheniya $ENV{} - izmenyaet okruzhenie. Udalenie iz hesha svyazannogo s bazoj dannyh - udalyaet zapis' v baze dannyh. die spisok Esli programma ne byla zapushchena iz eval() dannaya funkciya vyvodit spisok v potok STDERR i zavershaet rabotu programmy s kodom iz peremennoj $!. Esli $! soderzhit 0 to s kodom ($? >> 8). Esli i eto 0 to s kodom 255. Pri vyzove iz eval() soobshchenie ob oshibke zanositsya v peremennuyu $@ i eval() zavershaetsya s neopredelennym znacheniem. |to pozvolyaet otrobatyvat' oshibochnye situacii ne zavershaya golovnoj modul'. Esli stroka iz spiska ne zavershaetsya simvolom '\n' to dopolnitel'no pechataetsya nomer stroki skripta otkuda vyzvana funkciya i nomer vhodnoj stroki isli takovoj imeetsya. do BLOCK |to ne sovsem funkciya. Zdes' vozvrashchaetsya znachenie poslednego operatora bloka. Kogda ispol'zuetsya ciklicheskij modifikator BLOCK ispolnyaetsya pered proverkoj usloviya cikla v otlichii ot obychnyh ciklov. do podprogramma Ustarevshij metod vyzova podprogramm. do vyrazhenie Znachenie vyrazheniya vosprinimaetsya kak imya fajla Pel skripta. Iznachal'no eto primenyalos' dlya vklyucheniya podprogramm biblioteki. Sejchas pravil'nej ispol'zovat' vyzovy use() i require() kotorye obespechivayut kontrol' oshibok i zaversheniya. dump metka Vypolnnie "dampa" tekushchej pamyati. Primenyalos' dlya vozmozhnosti isrol'zovat' programmu undump chto by vklyuchit' tekushchij ispolnyaemyj kod v programmu posle inicializacii vseh peremennyh. Vypolnenie etoj novoj programmy budet nachinat'sya operatorom goto metka. Esli metka opushchena to zapusk snachala. Vnimanie! Fajly otkrytye do momenta dampa ne budut otkrytymi v moment ispolneniya novoj programmoj. each hesh Vozvrashchaet 2-elementnyj massiv. Pervyj element - klyuch vtoroj - znachenie sleduyushchego elementa hesha. Pozvolyaet "prosmatrivat'" vse znacheniya hesha v opredelennom poryadke. Sbros peremennoj cikla proishodit tol'ko posle prohlzhdeniya vsego massiva. eof fajl eof() eof Vozvrashchaet 1 esli vypolnyaetsya chtenie posle konca ili chtenie iz ne otkrytogo fajla. Argumentom dolzhno byt' vyrazhenie vozvrashchayushchee sushchestvuyushchij ukazatel' fajla. Dannuyu funkciyu nel'zya ispol'zovat' dlya chteniya fajlov otkrytyh kak terminaly. Esli argument ne ukazan to ispol'zuetsya poslednij chitaemyj fajl. Ispol'zovanie v forme eof() celesoobrazno primenyat' v ciklah while(<>) dlya opredeleniya konca tol'ko poslednego fajla iz spiska. Primenyajte eof(ARGV) ili eof dlya opredeleniya konca kazhdogo fajla iz spiska. eval vyrazhenie eval blok Vyrazhenie skaniruetsya i vypolnyaetsya kak obychnaya Pel programma. |to delaetsya v kontekste tekushchej programmy poetomu mozhno ispol'zovat' uzhe opredelennye peremennye i podprogrammy. Vorzvrashchaetsya rezul'tat poslednego operatora v bloke ili znachenie operatora return. Esli obnaruzhitsya sintaksicheskaya oshibka ili vypolnitsya operator die vozvrashchaetsya ne opredelennoe znachenie a peremennaya $@ soderzhit soobshchenie ob oshibke. Esli oshibki ne bylo to $@ soderzhit nulevuyu stroku. Pri otsutsvii argumenta beretsya znachenie peremennoj $_. exec spisok Vypolnyaetsya sistemnaya komanda iz spiska i vypolnenie programmy zavershaetsya. Esli vam neobhodimo vernut'sya to luchshe primenyajte funkciyu system(). Esli v spiske kolichestvo argumentov bol'she 1 ili spisok eto massiv s kolichestvom elementov bol'she 1 to vypolnyaetsya sistemnyj vyzov execvp() s argumentami iz spiska. Esli odin skalyarnyj argument to on skaniruetsya na obrabotku metasimvolov i esli oni prisutsvuyut to poluchennye argumety peredayutsya interpretatoru /bin/sh -c dlya dal'nejshej obrabotki. Esli metasimvolov net to argument rasshcheplyaetsya na slova i peredaetsya sistemnomu vyzovu execvp() chto bolee effektivno. Vnimanie! exec() i system(0) ne sbrasyvayut bufer vvoda/vyvoda poetomu neobhodimo ustanovit' peremennuyu $| dlya predotvrashcheniya poteri vyhodnoj informacii. exists vyrazhenie Vozvrashchaet true esli sushchestvuet ukazannyj klyuch hesha dazhe esli ne opredeleno ego znachenie. exit vyrazhenie Vypolnenie programmy zavershaetsya s kodom vyrazheniya. exp vyrazhenie Vozvrashchaet e (osnovanie natural'nogo logarifma) v stepeni vyrazheniya. fcntl fajl, funkciya, skalyar Vypolnyaet sistemnyj vyzov fcntl(). Dlya ispol'zovaniya obyazatel'no vypolnit' use Fcntl; fileno fajl Vozvrashchaet opisatel' fajla dlya dannogo ukazatelya fajla. flock fajl, operaciya Sistemnyj vyzov flock() fork Sistemnyj vyzov fork(). Vozvrashchaet pid potomka dlya roditelya i 0 dlya potomka v sluchae uspeha inache - neopredelennoe znachenie. format Deklarativnaya funkciya Pel. Opredelyaet format vyvoda dlya operatora write. Podrobno smotrite glavu Formaty. formline format, spisok Vnutrennyaya funkciya ispol'zuemaya v format. Formatiruet vyvod parametrov iz spiska. Rezul'tat pomeshchaetsya v peremennuyu $^A Funkciya write prosto vyvodit znachenie etoj peremennoj, no ee tak zhe mozhno chitat' a zatem obnulyat'. Obychno format vypolnyae odin vyzov formline dlya odnoj stroki formy, no formline ne razdelyaet stroki formata. |to znachit chto simvoly '~' i '~~' rassmatrivayut ves' format kak odnu stroku poetomu neobhodimo ispol'zovat' mnogostrochnye formyd dlya opisaniya odnoj zapisi formata. getc fajl getc CHitaet i vozvrashchaet simvol iz ukazannogo fajla. Esli fajl ne ukazan to chitaetsya STDIN. Posle konca fajla vozvrashchaet pustuyu stroku. getlogin Vozvrashchaet tekushchij login iz fajla /etc/utmp Ne primenyajte dlya identifikacii pol'zovatelya on ne tak sil'no "zakryt" kak getpwuid(). getpeername sokit Vozvrashchaet upakovannyj adres udalennogo sokita. getpgrp PID Vozvrashchaet gruppu processa s ukazannym PID. Esli argument otsutsvuet vozvrashchaet gruppu tekushchego processa. getppid Vozvrashchaet PID roditel'skogo processa. getpriority WHICH, WHO Vozvrashchaet tekushchij prioritet processa, gruppy processov ili pol'zovatelya.  * Gruppa sistemnyh vyzovov *  getpwnam NAME getgrnam NAME gethostbyname NAME getnamebyname NAME getprotobyname NAME getpwuid UID getgrid GID getservbyname NAME, PROTO gethostbyaddr ADDR, ADDRTYPE getnetbyaddr ADDR, ADDRTYPE getprotobynumber NUMBER getservbyport PORT, PROTO getpwent gethostent getnetent getprotoent getservent setpwent setgrent sethostent STAYOPEN setnetent STAYOPEN setprotoent STAYOPEN setservent STAYOPEN endpwent endgrent endhostent endnetent endprotoent endservent Vse eti funkcii anologichny odnoimennym sistemnym vyzovam. V spiskovom kontekste vozvrashchayut sleduyushchie spiski: ($name, $passwd, $uid, $gid, $quota, $comment, $gcos, $dir, $shell) = getpw* ($name, $passwd, $gid, $members) = getgr* ($name, $aliases, $addrtype, $length, @addrs) = gethost* ($name, $aliases, $addrtype, $net) = getnet* ($name, $aliases, $proto) = getproto* ($name, $aliases, $port, $proto) = getserv* V skalyarnom kontekste vozvrashchaetsya imya ili chto-to drugoe v zavisimosti ot tipa funkcii. |lement $members v vyzove getgr soderzhit razdelennye probelom imena chlenov gruppy. @addrs soderzhit IP adresa komp'yuterov v seti Internet v