37.ÈÏèÑ (NEXT-CHAPTER PREV-CHAPTER CONTENTS)
37.1 ÈèÏ×èÂÚÔÆÚ
37.2 ÈèÏÚÏÌèË
37.2.1 Conditional ÔÚ³èÍ
37.3 Pattern Matching - Regular Expressions
37.3.1 ÕÝÏÞ Ô ¤Æè (^,$)
37.3.2 ³å§ ËÜ ¤³èÖÏ (.)
37.3.3 ¤³èÖÏ ×Þ¸Ü ([,])
37.3.4 ÈÝÆÏÚÔßÂèÂÛ (*,+)
37.4 ÌáÑ ³Ú ÉÑ
37.5 ×Ú¡¸å¢ Ìᢠ`ÍÚ' (`|')
37.1 ÈèÏ×èÂÚÔÆÚ ([37.2] [UP])
# ÈèÏåµèÏÚÌ ÉÚ¦Ñ, ÈÏèÑ interpreter, (ÑÛ´ÆÚ ÕáÖ)
37.2 ÈèÏÚÏÌèË ([37.3] [37.2.1] [37.1] [UP])
ÆÛÌèÆÑÛ´Û ÈÏèÑ ÈèϵèÏÚÌ ¥È³Ú ¤ËÛÔÚÄÆ ³ÏÂÚ Øâ :-
#!/usr/bin/perl
print "ÏÚÌ ÏÚÌ!/n";
¦× ÈèÏåµèÏÚÌ ³å ¸ÑÚÆá ÈÏ ÈèÏÃÌ È¢³èÂÛ ³ÌèÈèÍÞ½Ï ³å ÍØ ÊÂÚÆÜ Øâ ³Û ÍØ
¬³ ÈÏèÑ ³Ú ÈèÏåµèÏÚÌ Øâ. ÄèÔÛÂÜÍ È¢³èÂÛ ÌÚÆÜ½Ï ÈÏ 'ÏÚÌ ÏÚÌ!' ÑÛ´ÂÜ Øâ.
'print' ¥ÄáÕ ÌÚÆÜ½Ï ×è³èÏÜÆ ÈÏ ÈØÑá 'ÏÚÌ ÏÚÌ!' ÑÛ´ÂÚ Øâ. ÂÂèèÈÕè¸Ú ÔØ
\n ÑÛ´ÂÚ Øâ, ºå ³Ïè×Ï ³å ×è³èÏÜÆ ÈÏ Æ§ È¢³èÂÛ ÈÏ Ñá ºÚÂÚ Øâ. ÔÚ×èÂÔ
ÌᢠÈÏèÑ Ìᢠ"\n" ³Ú ¤ËÛÈèÏÚÍ Øâ ¬³ ÔÛÕáÖ ¤³èÖÏ ºå Ƨ È¢³èÂÛ ³Ú ×Þ¸³
Øâ. ×áÌܳåÑÆ (;) ÈèÏåµèÏÚÌ ÔÚ³èÍ ³Ü ×ÌÚÈèÂÛ ³Ú ×Þ¸³ Øâ.
ÍÄÛ ¥È ¸ÚØÂá Ø⢠³Û ÆÚÌ ÈÞ¹³Ï ¤ËÛÔÚÄÆ ³ÛÍÚ ºÚÍÚ Âå ÑÛ´ ׳Âá Ø⢠:-
print "¥È³Ú ÕÝË ÆÚÌ? ";
$name = ;
chop $name;
print "$name, ÏÚÌ ÏÚÌ!\n";
¦×³å ¸ÑÚÆá ÈÏ ×è³èÏÜÆ ÈÏ ÆÛÌèÆÑÛ´Û ÔÚÏèÂÚÑÚÈ ØåµÚ :-
¥È³Ú ÕÝË ÆÚÌ : ÌåØÆ ,
------------
ÌåØÆ, ÏÚÌ ÏÚÌ!
³ÚÏèͳÏèÂÚ ÄèÔÚÏÚ ½Ú¦È ³Ü Øݧ ×Ú̵èÏÜ ÈÄÏá´Ú (underline) ÄèÔÚÏÚ
¤¢³Û Øâ.
¨ÈÏå³è ÈèÏåµèÏÚÌ ÌᢠÄèÔÛÂÜÍ ÔÚ³èÍ Ìá¢, ³Ú ¤Ïèà Øâ ³Û
³ÌèÈèÍÞ½Ï ¥È³á ÄèÔÚÏÚ ¤ÈÆÚ ÆÚÌ ½Ú¦È ³ÏÆá ³Ü ÈèÏÂܳèÖÚ ³ÏÂÚ Øâ, ÂÃÚ
½Ú¦È ³Ï³á ºÊ ¥È enter ³Ý¢ºÜ ÄÊÚÂá Øâ¢, Âå `' ³Ú ÌÞÑèÍ ØåÂÚ
Øâ ¥È³Ú ½Ú¦È ³ÛÍÚ ØÝ¥ ÆÚÌ. `=' ³Ú ¤Ïèà Øâ ³Û `' ³á ÌÞÑèÍ ³å
³ÌèÈèÍÞ½Ï ¤ÈÆÜ ×èÌßÂÛ Ìᢠϴá. ¦× ×èÌßÂÛ ¤¢Õ ³å `$name' ³ØÚ µÍÚ Øâ.
¤µÑá ÔÚ³èÍ Ìᢠ`chop'³Ú ¤Ïèà Øâ ³Û $name ÌᢠÔÛÄèÍÌÚÆ string ³á ¤¢ÂÛÌ
¤³èÖÏ ³å ¤ÏèÃÚ Ƨ È¢³èÂÛ ×Þ¸³ (\n) ¤³èÖÏ ³å Ø½Ú ÄÛÍÚ ºÚÍ. ³ÚÏèͳÏèÂÚ
ÄèÔÚÏÚ `enter' ³Ý¢ºÜ ÄÊÚÆá ÈÏ ÍØÜ \n ¤³èÖÏ, ÆÚÌ ³á ¤Æè ÌᢠעѵèÆ
Øå ºÚÂÚ Øâ. ¤¢ÂÛÌ ÈèÏåµèÏÚÌ ÔÚ³èÍ ÄèÔÚÏÚ ×è³èÏÜÆ ÈÏ ¥È³á ÆÚÌ ³á ×ÚÃ
¤ËÛÔÚÄÆ ¥ ºÚÂÚ Øâ.
¤ËÜ ØÌÆá ¬³ ÌØÂèÔÈÞÏèÁ ÊÚ ×Ü´Ü :- ³ÌèÈèÍÞ½Ï ³Ü ×èÌßÂÛ Ìᢠ³Ý¹ Ï´ÆÚ
Øå Âå ×èÌßÂÛ ¤¢Õ ³å ¬³ ÆÚÌ ÄÛÍÚ ºÚÂÚ Øâ, ºâ×á $name, ÂÃÚ `=' ÍÚ ¤ÆèÍ
¨ÈÚÍᢠ×á ¨×Ìᢠ³Ý¹ Ï´Ú ºÚ ׳ÂÚ Øâ. ×èÌßÂÛ ¤¢Õ ³Ú ÆÚÌ `$' ×á ÈèÏÚÏ¢Ë
ØåÂÚ Øâ, ÂÃÚ ¦×á variable ËÜ ³ØÂá Øâ¢.
¬³ ×èÌßÂÛ ¤¢Õ ÌᢠÔÛÄèÍÌÚÆ ÌÞÑèÍ ³å ÄÞ×Ïá Ìᢠ×èÃÚÆÚÆèÂÏÛ ³ÛÍÚ ºÚ
׳ÂÚ Øâ :-
$person = 'ÕèÏÜ '. $name;
ÍØÚ¡ ÈÏ `.' ¬³ operator Øâ ºå Äå strings ³å ºå¿éÂÚ Øâ. ÍØÚ¡ ÈÏ ÆÚÌ
×á ÈÞÏèÔ 'ÕèÏÜ ' ³å ºå¿Ú ºÚÂÚ Øâ. ÂÂÈÕè¸Ú `=' ³á ¤ÆÝ×ÚÏ Æ§ string
³å ¬³ Ƭ ×èÌßÂÛ ¤¢Õ ($person) Ìá¢ Ï´Ú ºÚÂÚ Øâ. ³Û×Ü ×èÌßÂÛ ¤¢Õ ³á
ÌÞÑèÍ ³å ÊÀéÚ ¶½Ú ³Ï ÔÚÈ× ¨×Ü ×èÌßÂÛ ¤¢Õ ÌᢠËÜ Ï´Ú ºÚ ׳ÂÚ Øâ :-
$name = $name . 'ºÜ';
37.2.1 Conditional ÔÚ³èÍ ([37.3] [37.2] [UP])
ÈèÏåµèÏÚÌ Ìᢠ×èÃÛ ×ËÜ ¥ÄáÕå¢ ³å ³ÌèÈèÍÞ½Ï ¸ÑÚ¬, ÍØ ¥ÔÕèͳ ÆØÜ¢
Øâ. conditional ÔÚ³èÍå ³Ü ×ØÚÍÂÚ ×á, Äå ÍÚ Äå ×á ¤ÅÛ³ ÔÚ³èÍå¢ ³á Êܸ
¸ÍÆ ËÜ ³ÛÍÚ ºÚ ׳ÂÚ Øâ. ¨ÄÚØÏÁÚÏèà ÍÄÛ ³ÚÏèͳÏèÂÚ ³Ú ÆÚÌ `ÏÚÌ' Øâ Âå,
ËÛÆèÆ ¤ËÛÔÚÄÆ ÄÛÍÚ ºÚ ׳ÂÚ Øâ. ¦×³á ÑÛÍá ¨ÈÏå³è ÈèÏåµèÏÚÌ Ìᢠ¤¢ÂÛÌ
ÔÚ³èÍ ³á ×èÃÚÆ ÈÏ ËÛÆèÆ ÔÚ³èÍ ÑÛ´ÆÚ ØåµÚ:-
if ($name eq 'ÏÚÌ') {
print "ÆÌ×èÂá $name!\n";
}
else { print "$name, ÏÚÌ ÏÚÌ!\n";}
¤Â£ ÍÄÛ `ÏÚÌ' ÆÚ̳ ³ÚÏèͳÏèÂÚ ÈèÏåµèÏÚÌ ¸ÑÚÂÚ Øâ Âå ³Ý¹ ¦× ÂÏØ ³Ú
ÔÚÏèÂÚÑÚÈ ØåµÚ :-
¥È³Ú ÕÝË ÆÚÌ? ÏÚÌ
----------
ÆÌ×èÂá ÏÚÌ!
³ÚÏèͳÏèÂÚ ÄèÔÚÏÚ ¤ÆèÍ ÆÚÌ ÊÂÚÆá ÈÏ, ÈØÑá ºâ×Ú ÔÚÏèÂÚÑÚÈ ØÜ ØåµÚ.
¤Â£ conditional ÔÚ³èÍ ³Ú ÏÞÈ Øâ :-
if () { <ØÚ¡-ÔÚ³èÍ> }
else { <¤ÆèÍÃÚ-ÔÚ³èÍ> }
¦×³á ¤ÆèÂÏèµÂ ³Ú ÌÞÑèÍ ÆÛ³ÚÑÚ ºÚÂÚ Øâ. `׸' ¨ÂèÂÏ ¥Æá ÈÏ
<ØÚ¡-ÔÚ³èÍ> ³á ÔÚ³èÍå¢ ³å ¸ÑÚÍÚ ºÚÂÚ Øâ. ¨ÈÏå³è ¨ÄÚØÏÁ Ìá¢
Øâ :-
$name eq 'ÏÚÌ'
¦×³Ú ¤Ïèà Øâ $name ×èÌßÂÛ ¤¢Õ ÌᢠÔÛÄèÍÌÚÆ ÌÞÑèÍ ³Ú 'ÏÚÌ' string ×á
ÂÝÑÆÚ ³ÏÆÚ ÂÃÚ ÍÄÛ Ôá ÊÏÚÊÏ (eq) Ø⢠Âå ¨ÂèÂÏ ØÚ¡ ÌᢠÄáÆÚ ¤ÆèÍÃÚ
ÆØÜ¢ Ìá¢. ³Ú ÏÞÈ Øâ :-
ºØÚ¡ ÈÏ ³á ×èÃÚÆ ÈÏ ¥ ׳Âá Ø⢠:-
(³) constant :- 'ÏÚÌ', 'ÔÆ', 3, 5.2 ¦ÂèÍÚÄÛ
(´) ×èÌßÂÛ ¤¢Õ ³Ú ÆÚÌ :- $name, $person ¦ÂèÍÚÄÛ
(µ) ¤ÆèÍ (ÊÚÄ ÌᢠÊÂÚ¬ ºÚ¬¡µá¢)
ÄåÆå¢ ÌᢠÂÝÑÆÚ ³ÏÂÚ Øâ ³á ×èÃÚÆ
ÈÏ ¥ ׳Âá Ø⢠:-
eq (equal) expressions Ìᢠstrings ³Ú ¬³×Ú ØåÆÚ
ne (not equal) expressions Ìᢠstrings ³Ú ¬³×Ú Æ ØåÆÚ
== expresions Ìᢠע´èÍÚ ÊÏÚÊÏ ØåÆÚ
!= expresions Ìᢠע´èÍÚ ÊÏÚÊÏ Æ ØåÆÚ
< ÈØÑÜ ×¢´èÍÚ ÄÞ×ÏÜ ×¢´èÍÚ ×á ³Ì ØåÆÚ
<= ÈØÑÜ ×¢´èÍÚ ÄÞ×ÏÜ ×¢´èÍÚ ×á ³Ì ØåÆÚ ÍÚ ÊÏÚÊÏ ØåÆÚ
> ÈØÑÜ ×¢´èÍÚ ÄÞ×ÏÜ ×¢´èÍÚ ×á ¤ÅÛ³ ØåÆÚ
>= ÈØÑÜ ×¢´èÍÚ ÄÞ×ÏÜ ×¢´èÍÚ ×á ¤ÅÛ³ ÍÚ ÊÏÚÊÏ ØåÆÚ ¦ÂèÍÚÄÛ
ÍÄÛ ³Û×Ü ÈèÏåµèÏÚÌ ÔÚ³èÍ ³å ÊÚÏ ÊÚÏ ¸ÑÚÆÚ Øâ Âå ¦×³á ÑÛÍá loop
¨ÈÑÊèÅ Øâ¢. ¨ÄÚØÏÁ ³á ÑÛÍá ÍÄÛ ³Û×Ü ÕÊèÄ-³åÕ Ìᢠ×á ÄÛÍá Øݬ ÕÊèÄ
³å ÀÞ¢ÀÆÚ Øâ Âå ÑÛ´ ׳Âá Ø⢠:-
#!/usr/bin/perl
# ÕÊèÄ ³å output ÉÚ¦Ñ ÌᢠÀÞ¢ÀÆÚ
while ($_ = ) {
if ($_ =~/ÈèÏÍÚÁ/) {print $_;}
}
ÍØÚ¡ ÈÏ 'while' ÑÞÈ ³Ú ¨ÈÍåµ ³ÛÍÚ µÍÚ Øâ. ÍØ ÈèÏåµèÏÚÌ STDIN Ìá ¤µÑÜ
È¢³èÂÛ ÈÀéÆá ³á ÈÕè¸Ú ¨×Ìᢠ'ÈèÏÍÚÁ' ³å ÀÞ¢ÀÂÚ Øâ ÂÃÚ ×ÉÑÂÚ ÌÛÑÆá
ÈÏ ¨× È¢³èÂÛ ³å ×è³èÏÜÆ ÈÏ ÑÛ´ÂÚ Øâ. ÍØ ×ÛÑ×ÛÑÚ ÂÊ Â³ ¸ÑÂÚ ÏØÂÚ Øá
ºÊ ³ ÕÊèÄ-³åÕ ÉÚ¦Ñ ×ÌÚÈè ÆØÜ¢ Øå ºÚÂÜ.
ÍØÚ¡ ÈÏ ¥ÄáÕ ¬³ È¢³èÂÛ ÈÀéÂÚ Øâ, ºâ×Ú ³Û ØÌ ÈØÑá Äá´ ¸Ý³á
Øâ¢. È¢³èÂÛ ³åÈÀé³Ï variable '$_' Ìá¢ Ï´Ú ºÚÂÚ Øâ. ÑÞÈ ³á ¤ÆèÂÏèµÂ
¨×ÌᢠÈèÏÍÚÁ ³å ÀÞ¢ÀÚ ºÚÂÚ Øâ. ÌÛÑÆá ÈÏ ¨× È¢³èÂÛ ³å ×è³èÏÜÆ ÈÏ ÑÛ´
ÄÛÍÚ ºÚÂÚ Øâ. ÀÞ¢ÀÆá ³Ú ³ÚÏèÍ ØåÂÚ Øâ :-
$_ =~ /ÈèÏÍÚÁ/
ÄèÔÚÏÚ. ÍØ ¥ÄáÕ Øâ 'ÈèÏÍÚÁ' ³å variable $_ ÌᢠÀÞ¢ÀÆá ³Ú. ×ÉÑÂÚ ÌÛÑÆá
ÈÏ ØÚ¡-ÔÚ³èÍ Øâ :-
print $_;
ºÛ׳á ÄèÔÚÏÚ ÍØ È¢³èÂÛ ×è³èÏÜÆ ÈÏ ÑÛ´ ÄÜ ºÚÂÜ Øâ. ÑÞÈ ÂÊ Â³ ¸ÑÂÚ Øâ
ºÊ ³ È¢³èÂÛÍÚ¡ ÈÀÂÚ ÏØÂÚ Øâ. ÉÚ¦Ñ ×ÌÚÈè ØåÆá ÈÏ ÑÞÈ ×ÌÚÈèÂ
Øå ºÚÂÚ Øâ.
¸Þ¢³Û ¦× ÂÏØ ³á ÑÞÈ ÊÚÏ ÊÚÏ ¥Âá Øâ¢, ¦×³Ú ¬³ ×¢³èÖÛÈè ÏÞÈ ËÜ Øâ :-
while (<>) {
if (/ÈèÏÍÚÁ/) { print; }
}
³ØÆá ³Ú ÂÚÂèÈÏèÍ Øâ ³Û <>, //, print ¥ÄÛ ³á ×Úà variable ³Ú ÆÚÌ Æ ÄÛÍÚ
µÍÚ Øå Âå Ôá $_ ³á ÌÚÅèÍÌ ×á ¤ÈÆÚ ¤ÈÆÚ ³ÚÏèÍ ³ÏÂá Øâ¢. ¦×Ü ÈèϳÚÏ ×á
×ÚÌÚÆèÍ£ <> ³Ú ÈÞÏèÁ ÏÞÈ Øâ .
¨ÈÏå³è ÈèÏåµèÏÚÌ ³å ÍÄÛ srch.pl ÉÚ¦Ñ Ìá¢ Ï´Ú ºÚ¬ ÂÃÚ ÕÊèÄ-³åÕ '³åÕ'
ÆÚ̳ ÉÚ¦Ñ ÌᢠØå Âå ¨×á ¦× ÈèϳÚÏ ×á ´åº ×³Âá Ø⢠:-
$ srch.pl < ³åÕ
"ÈèÏÍÚÁ","n"
37.3 Pattern Matching - Regular Expressions ([37.4] [37.3.1] [37.2] [UP])
ÈÛ¹Ñá ¤Æݸè¹áÄ ÌᢠØÌÆá Äá´Ú ³Û ÈÏèÑ ÄèÔÚÏÚ ³Û× ÈèϳÚÏ ¬³ string ³å
ÄÞ×Ïá string ÌᢠÀÞ¢ÀéÚ ºÚ ׳ÂÚ Øâ. ÌÚÆÑᢠ³Û ÄÜ µ§ È¢³èÂÛ Øâ :-
$_ = ' ÊÝÆèÄáÑå ØÏÊåÑå¢ ³á ÌÝ¡Ø ØÌÆá ×ÝÆÜ ³ØÚÆÜ ÃÜ';
ÂÃÚ ÍÄÛ ÍØ ºÚÆÆá ³Ü ºÏÞÏ Øâ ³Û ³èÍÚ ¦×Ìᢠ'Ì' ×á ÕÝÏÞ ØåÆá ÔÚÑÚ ÕÊèÄ
Øâ, Âå ÑÛ´ ׳Âá Ø⢠:-
/ Ì/
¦×³á ¤ÂÛÏÛ³è ÈÏèÑ ÌᢠÄÛÍá Øݬ ×Ú¢¸å¢ (pattern) ³å ÀÞ¢ÀÆá ³Ü ³èÖÌÂÚ
Øâ. ¦× ¤Æݸè¹áÄ ÌᢠØÌ ×Ú¢¸å¢ ³á ÔÛÖÍ Ìᢠ×ܴᢵá. Íá ÍÞÆÛ³è× ³á
×Ú¢¸å¢ ³á ÔÛÖÍ Ìᢠ×ܴᢵá. Íá ÍÞÆÛ³è× ³á ×Ú¢¸å¢ ÈÏ ØÜ ¥ÅÚÏÛÂ, ¨Æ³Ú
ØÜ ÔÛ×èÂß ÏÞÈ Øâ¢.
37.3.1 ÕÝÏÞ Ô ¤Æè (^,$) ([37.4] [37.3] [37.3.2] [UP])
ÍÄÛ ³Û×Ü string ³å È¢³èÂÛ ³á ÈèÏÚÏ¢Ë ÌᢠØÜ ÀÞÀéÆÚ Øâ Âå ÑÛ´ ׳Âá
Ø⢠:-
/^ÊÝÆèÄáÑå/
ÍØ ÈèÏÃÌ ÕÊèÄ ×á ÌáÑ ´Ú¬µÚ. ¦×Ü ÈèϳÚÏ ¤¢Â ÌᢠÀÞ¢ÀÆá ³á ÑÛÍá
Ñ۴ᢵá :-
/ÍÜ$/
37.3.2 ³å§ ËÜ ¤³èÖÏ (.) ([37.4] [37.3] [37.3.3] [37.3.1] [UP])
ÍÄÛ ×Ú¢¸á Ìᢠ³å§ ËÜ ¤³èÖÏ ¥ ׳ÂÚ Øâ, Âå ¨×á `.' ³Ü ×ØÚÍÂÚ ×á ÑÛ´Ú
ºÚ ׳ÂÚ Øâ. ¨ÄÚØÏÁ ³á ÑÛÍá ÆÛÌèÆ ×Ú¢¸Ú ¨× ÕÊèÄ ³å ÀÞ¢ÀÂÚ Øâ ºÛ׳Ú
ÈèÏÃÌ ¤³èÖÏ ³Ý¹ ËÜ Øå ÈÏ `Ý' ³Ü ÌÚÂèÏÚ ³á ×Úà Øå:-
/ .Ý/
¤Â£ ÍØ ` ÊÝ' ×á ÌÛÑÚÆ ³ÏáµÚ.
37.3.3 ¤³èÖÏ ×Þ¸Ü ([,]) ([37.4] [37.3] [37.3.4] [37.3.2] [UP])
ÍÄÛ ¬³ ×Þ¸Ü Ìᢠ¥Æá ÔÚÑá ¤³èÖÏ ³å ÀÞ¢ÀÆÚ Øâ Âå ÍØ ×ÏÑÂÚ ×á ³ÛÍÚ ºÚ
׳ÂÚ Øâ. ¨ÄÚØÏÁÚÏèÃ, `Ì' ÍÚ `×' ×á ÈèÏÚÏÌèË ØåÆá ÔÚÑá ÕÊèÄ ³å ÀÞ¢ÀÆÚ
Øå Âå ³åÖè¾³ Ìᢠ¿ÚÑ³Ï ¨Æ³Ü ×Þ¸Ü ÊÆÚ§ ºÚ ׳ÂÜ Øâ :-
/ [Ì×]/
ÍÄÛ `Ý' ³Ü ÌÚÂèÏÚ ×ØÛ ÈèÏÃÌ ¤³èÖÏ Ìᢠ`Ì' ÍÚ `×' ³å ÀÞ¢ÀÆÚ Øå Âå
Ñ۴ᢵá :-
/ [Ì×]Ý/
ÍØ ` ÌÝ' (ÌÝ¡Ø) ×á ÌÛÑÚÆ ³ÏáµÚ.
`Ì' ÍÚ `×' ×á ËÛÆèÆ ¤³èÖÏ ×á ÈèÏÚÏ¢Ë ØåÆá ÔÚÑÚ Ô `Ý' ³Ü ÌÚÂèÏÚ ×ØÛÂ
ÕÊèÄ ³å ÀÞ¢ÀÆá ³á ÑÛÍá Ñ۴ᢵá :-
/ [^Ì×]Ý/
¦× ¨ÄÚØÏÁ ÌᢠÍØ `ÊÝ' ×á ÌÛÑÚÆ ³ÏáµÚ.¤Â£ ºØÚ¡ [..] ¤³èÖÏå¢ ³Ü ×Þ¸Ü
ÄáÂÚ Øâ, ÔØÜ¢ [^..] ÄÛÍá Øݬ ¤³èÖÏå¢ ³á ¤ÂÛÏ۳蠤ÆèÍ ×ËÜ ³Ü ×Þ¸Ü ÊÂÚÂÚ
Øâ. (ÅèÍÚÆ Äᢠ³Û `^' ³Ú ¤Ïèà ³åÖè¾³ ÌᢠÂÃÚ ³åÖè¾³ ³á ÊÚØÏ ËÛÆèÆ Øâ.
³åÖè¾³ ³á ÊÚØÏ ÔØ string ³á ÈèÏÚÏ¢Ë ³Ú ×Þ¸³ Øâ ºâ×Ú ³Û ÈØÑá ÊÂÚÍÚ
ºÚ ¸Ý³Ú Øâ.)
`-' ³Ü ×ØÚÍÂÚ ×á ³èÏÌ Ìᢠ¥Æá ÔÚÑá ¤³èÖÏå¢ ³Ü ×Þ¸Ü ×ÏÑÂÚ ×á ÊÆ ×³ÂÜ
Øâ. ºâ×á, ÍÄÛ 0 ×á 4, Ô 7 ×á 9 ³å ÀÞ¢ÀÆÚ Øå Âå Ñ۴ᢵᢠ:-
/[0-47-9]/
37.3.4 ÈÝÆÏÚÔßÂèÂÛ (*,+) ([37.4] [37.3] [37.3.3] [UP])
ÍÄÛ ³Û×Ü ¤³èÖÏ ÍÚ ×Ú¡¸á ³Ü ÈÝÆÏÚÔßÂèÂÛ ³å ÀÞ¢ÀÆÚ Øå Âå `*' ³Ú ÈèÏÍåµ
³ÛÍÚ ºÚ ׳ÂÚ Øâ. ÍÄÛ ØÌᢠ`¨×á' ³á ÔÛËÛÆèÆ ÏÞÈå¢ ³å (ºâ×á:- ¨×Æá,
¨×³å, ¦ÂèÍÚÄÛ) ³å ÀÞ¢ÀÆÚ Øå Âå Ñ۴ᢵá:-
/ ¨×[^ ]+/
¨ÈÏå³è ³Ú ¤Ïèà Øâ ³Û ` ¨×' ³á ÈÕè¸Ú ` ' (space) ³á ¤ÂÛÏÛ³è ³å§ ËÜ
¤³èÖÏ ÍÚ ÔÏèÁ ¬³ ÍÚ ¬³ ×á ¤ÅÛ³ ÊÚÏ ¥ ׳ÂÚ Øâ. ¤Â£ ÍØ ` ¨×'
³å ÆØÜ¢ ÀÞ¢ÀáµÚ. ÍÄÛ ÄÛÆ³Ï ³Ü È¢³èÂÛÍÚ¡ Øâ :-
$ =` ³èÖÌÚ ³èÖáÌÂÜ ¨× Ëݺ¢µ ³å ºÛ׳á ÈÚ× µÏÑ Øå'
¨×³Ú ³èÍÚ ºå Ģ ØÜÆ ÔÛÖ ÏØÛ ÔÛÆÜ ×ÏÑ Øå;
Âå ÍØ ×Ú¢¸Ú ` ¨×³Ú' ×á ÌáÑ ´Ú¬µÚ.
'*' ³Ú ¤Ïèà '+' ºâ×Ú ØÜ Øâ. ¤ÆèÂÏ ³áÔÑ ¦ÂÆÚ ØÜ Øâ ³Û '*' ÕÞÆèÍ ÍÚ
¤ÅÛ³ ÊÚÏ ÈÝÆÏÚÔßÂèÂÛ ³Ú ÄèÍå³ Øâ. ¤Â£ ÔØ ÕÞÆèÍ string (¤ÏèÃÚÂè '') ×á
ËÜ ÌáÑ ´Ú ׳ÂÚ Øâ. ¤Â£, ×Ú¡¸Ú :-
/ ¨×[^ ]*/
' ¨×' ×á ËÜ ÌáÑ ´Ú ׳ÂÚ Øâ (ÂÃÚ ' ¨×³Ú' ×á ËÜ). ¨ÈÏå³è ¨ÄÚØÏÁ Ìá¢,
[^ ]*
ÕÞÆèÍ string ×á ËÜ ÌáÑ ´Ú ׳ÂÚ Øâ, ¤Â£, ' ¨×' ³á ÊÚÄ ÕÞÆèÍ string
ºå¿Æá ×á ' ¨×' ØÜ ÊÆÂÚ Øâ. ×Úà ØÜ ÍÄÛ [^ ] ³Ü ÈÝÆÏÚÔßÂèÂÛ
37.4 ÌáÑ ³Ú ÉÑ ([37.5] [37.3] [UP])
ºÊ ³Û×Ü ×Ú¢¸á ³å ÀÞ¡ÀéÚ ºÚÂÚ Øâ ÂÃÚ ×ÉÑÂÚ ÈÞÏèÔ³ ÌáÑ Øå ºÚÂÚ Øâ Âå ¦×³Ú
ÉÑ ³Ý¹ ÔÛÕáÖ variables Ìᢠ¸ÑÚ ºÚÂÚ Øâ. ¨ÄÚØÏÁ ³á ÑÛÍá ¨ÈÏå³è ¨ÄÚØÏÁ
ÌᢠÌáÑ ³ÛÍÚ ØÝ¥ string ` ¨×³Ú', ÆÚ̳ variable ÌᢠÈÏèÑ ÄèÔÚÏÚ Ï´Ú ºÚÂÚ
Øâ:-
$& = ` ¨×³Ú'
¦××á ÈÞÏèÔ ³Ú ËÚµ ÂÃÚ Ê¸Ú ØÝ¥ ËÚµ ËÜ ÔÛÕáÖ variables Ìᢠϴ ÄÛÍÚ ºÚÂÚ Øâ :-
$` = ' ³èÖÌÚ ³èÖáÌÂÜ ¨× Ëݺ¢µ ³å ºÛ׳á ÈÚ× µÏÑ Øå'
$' = '³èÍÚ ºå Ģ ØÜÆ ÔÛÖ ÏØÛ ÔÛÆÜ ×ÏÑ Øå'
¦Æ variables ³á ÌÞÑèÍ ³å ÈèÏåµèÏÚÌ ÔÚ³èÍ ³Ü ÌÄÄ ×á ¨ÈÍåµ ÌᢠÑÚÍÚ ºÚ
׳ÂÚ Øâ. ¦Æ³å `print' ³ÛÍÚ ºÚ ׳ÂÚ Øâ, ¦ÆÌᢠÈÝÆ£ ³Û×Ü ×Ú¢¸á ³å
ÀÞ¢ÀéÚ ºÚ ׳ÂÚ Øâ, ¦ÂèÍÚÄÛ.
ÍÄÛ ÌáÑ ³ÛÍá Øݬ ×Ú¢¸á ³á ³Û×Ü ËÚµ ³å variable ÌᢠϴÆÚ Øå, Âå ¨×³Ü
ËÜ ×ÝÔÛÅÚ ¨ÈÑÊèÅ Øâ. ¨ÄÚØÏÁ ³á ÑÛÍá ÍÄÛ ØÌᢠ`¨×' ³á ×Úà ¥Íá Øݬ
suffix ³å ³Û×Ü variable ÌᢠϴÆÚ Øå Âå ÑÛ´ ׳Âá Ø⢠:-
/ ¨×([^ ]+)/
ºå ØÛ×è×Ú `(', `)' ³á Êܸ ÌᢠØâ, ¬³ variable ÔÛÕáÖ Ìᢠ($1 Ìá¢)
¸ÑÚ ºÚÂÚ Øâ. ¤Â£ ÍØÚ¡ ÈÏ :-
$1 = '³Ú'
ÍÄÛ ¬³ ×á ¤ÅÛ³ ³åÖè¾³ Ø⢠Âå ³èÏÌÕ£ $1, $2 ¦ÂèÍÚÄÛ variables
ÌᢠÌáÑ ´ÚÆá ÔÚÑá ËÚµ Ï´ ÄÛÍá ºÚÂá Øâ¢.
¨ÄÚØÏÁ ³á ÑÛÍá ËÛÆèÆ ×Ú¡¸á ×á :-
/ ¨×([^ ]*) + ([^ ]+)/
ÌáÑ ´ÚÆá ³á ÊÚÄ ØåµÚ :-
$1 =''
$2 = `Ëݺ¢µ'
ʸá Øݬ ËÚµ ÌᢠÈÝÆ£ ÍØÜ ×Ú¡¸Ú ÀÞ¡ÀÆá ÈÏ ÌáÑ ´ÚÆá ³á ÊÚÄ ØåµÚ :-
$1 = `³Ú'
$2 = `³èÍÚ'
37.5 ×Ú¡¸å¢ Ìᢠ`ÍÚ' (`|') ([37.4] [UP])
ÍÄÛ ÍØ ³ØÆÚ Øå ³Û ¬³ ×Ú¡¸Ú ÍÚ ¤ÆèÍ Âå `|' ³Ú ¨ÈÍåµ ³ÛÍÚ ºÚÂÚ Øâ ºâ×á,
ÍÄÛ `ØÜÆ' ÍÚ `ÏØÛÂ' ³å ÀÞ¢ÀÆÚ Øå ÂÃÚ ¨××á ÈÞÏèÔ ¥Æá ÔÚÑá ÕÊèÄ ³å
variable ÌᢠϴÆÚ Øå Âå Ñ۴ᢵá :-
/(([^ ]+) *ÏØÛÂ)|(([^ ]+) *ØÜÆ)/
ÕÝÏÞ Ìᢠ`ØÜÆ' ÌáÑ ´Ú¬µÚ, ³èÍå¢³Û ÄÜ Øݧ ³ÔÛÂÚ Ìᢠ'ØÜÆ' ÈØÑá ¥ÂÚ
Øâ, ¤Â£ ØåµÚ :-
$2 =''
$4 = 'Ä¢Â'
³åÖè¾³å¢ ³Ü ×¢´èÍÚ ÍÚ ¨Æ³å µÛÆÆá ³Ú ÂÏÜ³Ú Æܸá ÄÛÍÚ ØÝ¥ Øâ:-
/(([^ ]+) *ÏØÛÂ)|(([^ ]+) *ØÜÆ)/
|^-----^ | |^-----^ |
| $2 | | $4 |
| | | |
^-------------^ ^------------^
$1 $3
ʸá Øݬ ËÚµ Ìᢠ($') ×Ú¡¸á ³å ÈÝÆ£ ÀÞ¡ÀÆá ÈÏ `ÏØÛÂ' ÔÚÑÚ ËÚµ ÌáÑ
´Ú¬µÚ :-
$2 = `ÔÛÖ'
$4 =''
ÍØÚ¡ ÍØ ÅèÍÚÆ ÄáÆá ÍåµèÍ ÊÚ Øâ ³Û `(`, ')' ³Ú ¬³ ¨ÈÍåµ Øâ:- ÌáÑ ´Ú¬
Øݬ ËÚµ ³å variable ÌᢠϴÆÚ, ÂÃÚ ÄÞ×ÏÚ ¨ÈÍåµ Øâ scope ÊÂÚÆÚ. ¤Â£
ÈØÑá Ô ÂÜ×Ïá `(' ³Ú ¨ÄèÄáÕèÍ Øâ, `|' ³Ú scope ÊÂÚÆÚ. ÈÏèÑ ÄåÆå¢ ³Ú
ÈÚÑÆ ³ÏÂÜ Øâ, ÂÃÚ $1 Ô $3 ÌᢠËÜ ¨ÈÍݳè ÌÞÑèÍ Ï´ ÄáÂÜ Øâ, ËÑá ØÜ ØÌ
¨×³Ú ¨ÈÍåµ ³ÏᢠÍÚ ÆØÜ¢ :-
$1 = 'ÔÛÖ ÏØÛÂ'
$3 = ''
Index
Anusaaraka HOME PAGE