Perl, Operátory (20.díl)

Napsal O webu (») 10. 4. 2008 v kategorii Programování, přečteno: 737×
obrazky/logo_perl.jpgTermy a seznamové operátory Termy jsou proměnné, uvozovkové (a podobné) operátory, operátor <>, výrazy v ku¬latých závorkách a funkce s argumenty v závorkách. Za termy jsou ve skutečnosti považovánu i seznamové a pojmenované unární operátory (např. length, sin), které následují znakem levé kulaté závorky. Seznam v závor¬kách je pak považován za jejich argumenty a společně s operátorem mají nejvyšší preferenci.


Nejvyšší preferenci mají také seznamové operátory, jež mají další operátor ve výrazu vzhledem k sobě na levé straně. Nejprve totiž operátor pohltí svůj seznam argumentu a jeho návratová hodnota je dosazena do výrazu nalevo, tzv. operátor se ke své levé straně chová jako term. A nyní jeden příklad:



@a = localtime;

Print 'Dnes je ‘.join ‘/‘, $d[3], $d[4]+1, $d[5]+2000;




Všechnu výrazy napravo od join jsou vyhodnoceny před provedením join, ale všechno, co je vlevo, je vyhodnoceno až poté (i když je tam operátor ., který má vyšší prioritu).
Stejně jako na termy je pohlíženo na bloky do {} a eval {} na volání funkcí a metod objektu, a na konstruktory anonymních polí ([1]), hashu ({ }) a podpro¬gramů (sub { }).


Zpracovávání řetězcových termů


Mezi řetězcové termy patří řetězce v apostrofech, uvozovkách či obrácených apostro¬fech, víceřádkové řetězce, řetězce vytvořené pomocí operátorů q/ /, qq/ / a qx/ / s libovolnými ohraničovacími znaku. Podobným způsobem se zpracovávají regulární výrazy (operátory m// a s/// ) a operátor tr/ / /. Tam existuje několik odlišností a na rozdíl od řetězce jsou regulárním výrazy nakonec zpracovány automatem na zpracování regulárních výrazu.


Narazí-li interpret na něco, co vypadá jako začátek řetězcového termu, musí před dalším zpracováním nejprve nalézt jeho konec. Nalezení probíhá rozdílně podle toho, jaké ohraničovací symboly jsou použity. Použijeme-li jednoznakový symbol, který není závorka, přeskočí se všechny symboly a znaky, které byly použity pro ohraničení, uvozené obráceným lomítkem a konec termu bude tam, kde bude nalezen první ohraničovací znak. Jsou-li pro ohraničení použity závorky, přeskočí se všechny otevírací i uzavírací závorky, uvozené obráceným lomítkem a vnořené závorky, a hledá se první uzavírací závorka.



r/aaa\/bbb\\ccc/;

Přeskočí se \/bbb\\

R{aaa\{bbb{c}dd\}eeee};

Přeskočí se \{bbb{c}dd\}




A to by bylo pro dnešek všechno. V dalším díle se podíváme na detailnější popis zpracování řetězcových termů. V případě jakýchkoliv dotazů mě kontaktujte na email: habrman@banan.cz.


Autor: Robert Habrman
Štítky: Perl
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel devět a jedenáct