37.parla (@NEXT-@CHAPTER @PREV-@CHAPTER @CONTENTS)

37.1  prastAvanA 
37.2  prArambha 
	37.2.1  @Conditional vAkya 
37.3  @Pattern @Matching - @Regular @Expressions 
	37.3.1  shurU va anta (^,$) 
	37.3.2  koI bhI akSara (.) 
	37.3.3  akSara sUcI ([,]) 
	37.3.4  punarAvRtti (*,+) 
37.4  mela kA phala 
37.5  sAzcoM meM `yA' (`|') 


37.1 prastAvanA ([37.2] [UP])

# progrAma phAila, parla @interpreter, (likhanA sheSa)


37.2 prArambha ([37.3] [37.2.1] [37.1] [UP])

nimnalikhita parla pragrAma ApakA abhivAdana karatA HE :-

  #!/@usr/@bin/@perl
  @print "rAma rAma!/@n";

isa progrAma ko calAne para prathama paMkti kampyUTara ko yaHa batAnI HE ki yaHa
eka parla kA progrAma HE. dvitIya paMkti mAnITara para 'rAma rAma!' likhatI HE.
'@print' Adesha mAnITara skrIna para paHale 'rAma rAma!' likhatA HE. tat_pashcAta vaHa
\@n likhatA HE, jo karsara ko skrIna para naI paMkti para le jAtA HE. vAstava
meM parla meM "\@n" kA abhiprAya HE eka visheSa akSara jo naI paMkti kA sUcaka
HE. semIkolana (;) progrAma vAkya kI samApti kA sUcaka HE.

yadi Apa cAHate HEM ki nAma pUchakara abhivAdana kiyA jAyA to likha sakate HEM :-

  @print "ApakA shubha nAma? ";
  $@name = ;
  @chop $@name;
  @print "$@name, rAma rAma!\@n";

isako calAne para skrIna para nimnalikhita vArtAlApa HogA :-

  ApakA shubha nAma : moHana ,
                 ------------
  moHana, rAma rAma!

kAryakartA dvArA TAipa kI HuI sAmagrI padarekhA (underline) dvArA
aMkita HE.

uparokta progrAma meM dvitIya vAkya meM,  kA artha HE ki
kampyUTara Apake dvArA apanA nAma TAipa karane kI pratIkSA karatA HE, tathA
TAipa karake jaba Apa @enter kuMjI dabAte HEM, to `' kA mUlya HotA
HE ApakA TAipa kiyA HuA nAma. `=' kA artha HE ki `' ke mUlya ko
kampyUTara apanI smRti meM rakhe. isa smRti aMsha ko `$@name' kaHA gayA HE.
agale vAkya meM `@chop'kA artha HE ki $@name meM vidyamAna @string ke aMtima
akSara ko arthAta naI paMkti sUcaka (\@n) akSara ko HaTA diyA jAya. kAryakartA
dvArA `@enter' kuMjI dabAne para yaHI \@n akSara, nAma ke anta meM saMlagna
Ho jAtA HE. aMtima progrAma vAkya dvArA skrIna para Apake nAma ke sAtha
abhivAdana A jAtA HE.

abhI Hamane eka maHatvapUrNa bAta sIkhI :- kampyUTara kI smRti meM kucha rakhanA
Ho to smRti aMsha ko eka nAma diyA jAtA HE, jEse $@name, tathA `=' yA anya
upAyeM se usameM kucha rakhA jA sakatA HE. smRti aMsha kA nAma `$' se prAraMbha
HotA HE, tathA ise @variable bhI kaHate HEM.

eka smRti aMsha meM vidyamAna mUlya ko dUsare meM sthAnAntarita kiyA jA
sakatA HE :-

  $@person = 'shrI '. $@name;

yaHAz para `.' eka @operator HE jo do @strings ko joDxatA HE. yaHAz para nAma
se pUrva 'shrI ' ko joDA jAtA HE. tatapashcAta `=' ke anusAra naI @string
ko eka nae smRti aMsha ($@person) meM rakhA jAtA HE. kisI smRti aMsha ke
mUlya ko baDhxA ghaTA kara vApasa usI smRti aMsha meM bhI rakhA jA sakatA HE :-

  $@name = $@name . 'jI';



37.2.1 @Conditional vAkya ([37.3] [37.2] [UP])

progrAma meM sthita sabhI AdeshoM ko kampyUTara calAe, yaHa Avashyaka naHIM
HE. @conditional vAkyo kI saHAyatA se, do yA do se adhika vAkyoM ke bIca
cayana bhI kiyA jA sakatA HE. udAHaraNArtha yadi kAryakartA kA nAma `rAma' HE to,
bhinna abhivAdana diyA jA sakatA HE. isake liye uparokta progrAma meM aMtima
vAkya ke sthAna para bhinna vAkya likhanA HogA:-

  @if ($@name @eq 'rAma') {
    @print "namaste $@name!\@n";
  }
  @else { @print "$@name, rAma rAma!\@n";}

ataZZZ yadi `rAma' nAmaka kAryakartA progrAma calAtA HE to kucha isa taraHa kA
vArtAlApa HogA :-

  ApakA shubha nAma? rAma 
		----------
  namaste rAma!

kAryakartA dvArA anya nAma batAne para, paHale jEsA vArtAlApa HI HogA.

ataZZZ @conditional vAkya kA rUpa HE :-

  @if () { <ØÚ¡-ÔÚ³èÍ> }
  @else { <¤ÆèÍÃÚ-ÔÚ³èÍ> }

isake antargata  kA mUlya nikAlA jAtA HE. `saca' uttara Ane para
<ØÚ¡-ÔÚ³èÍ> ke vAkyoM ko calAyA jAtA HE. uparokta udAHaraNa meM 
HE :-

  $@name @eq 'rAma'

isakA artha HE $@name smRti aMsha meM vidyamAna mUlya kA 'rAma' @string se
tulanA karanA tathA yadi ve barAbara (eq) HEM to uttara HAz meM denA anyathA
naHIM meM.  kA rUpa HE :-

    

jaHAz para  ke sthAna para A sakate HEM :-

  (ka) @constant :- 'rAma', 'vana', 3, 5.2 ityAdi
  (kha) smRti aMsha kA nAma :- $@name, $@person ityAdi
  (ga) anya (bAda meM batAe jAezgeM)

 donoM  meM tulanA karatA HE  ke sthAna
para A sakate HEM :-

  @eq (equal)	@expressions meM @strings kA ekasA HonA
  @ne (not @equal) @expressions meM @strings kA ekasA na HonA

  ==		@expresions meM saMkhyA barAbara HonA
  !=		@expresions meM saMkhyA barAbara na HonA
  <		paHalI saMkhyA dUsarI saMkhyA se kama HonA
  <=		paHalI saMkhyA dUsarI saMkhyA se kama HonA yA barAbara HonA
  >		paHalI saMkhyA dUsarI saMkhyA se adhika HonA
  >=		paHalI saMkhyA dUsarI saMkhyA se adhika yA barAbara HonA ityAdi

yadi kisI progrAma vAkya ko bAra bAra calAnA HE to isake liye @loop
upalabdha HEM. udAHaraNa ke liye yadi kisI shabda-kosha meM se diye Hue shabda
ko DhUMDhanA HE to likha sakate HEM :-

  #!/@usr/@bin/@perl
  # shabda ko @output phAila meM DhUMDhanA
  @while ($_ = ) {
    @if ($_ =~/prayANa/) {@print $_;}
  }

yaHAz para '@while' lUpa kA upayoga kiyA gayA HE. yaHa progrAma @STDIN me agalI
paMkti paDhxane ke pashcAta usameM 'prayANa' ko DhUMDhatA HE tathA saphalatA milane
para usa paMkti ko skrIna para likhatA HE. yaHa silasilA taba taka calatA raHatA He
jaba taka shabda-kosha phAila samApta naHIM Ho jAtI.

yaHAz para  Adesha eka paMkti paDhxatA HE, jEsA ki Hama paHale dekha cuke
HEM. paMkti kopaDhxakara @variable '$_' meM rakhA jAtA HE. lUpa ke antargata
usameM prayANa ko DhUMDhA jAtA HE. milane para usa paMkti ko skrIna para likha
diyA jAtA HE. DhUMDhane kA kArya HotA HE :-

  $_ =~ /prayANa/

dvArA. yaHa Adesha HE 'prayANa' ko @variable $_ meM DhUMDhane kA. saphalatA milane
para HAz-vAkya HE :-

  @print $_;

jisake dvArA yaHa paMkti skrIna para likha dI jAtI HE. lUpa taba taka calatA HE
jaba taka  paMktiyAz paDhatA raHatA HE. phAila samApta Hone para lUpa samApta
Ho jAtA HE.

cUMki isa taraHa ke lUpa bAra bAra Ate HEM, isakA eka saMkSipta rUpa bhI HE :-

  @while (<>) {
    @if (/prayANa/) { @print; }
  }

kaHane kA tAtparya HE ki <>, //, @print Adi ke sAtha @variable kA nAma na diyA
gayA Ho to ve $_ ke mAdhyama se apanA apanA kArya karate HEM. isI prakAra se
sAmAnyataZZZ <> kA pUrNa rUpa HE .

uparokta progrAma ko yadi @srch.@pl phAila meM rakhA jAe tathA shabda-kosha 'kosha'
nAmaka phAila meM Ho to use isa prakAra se khoja sakate HEM :-

  $ @srch.@pl  < kosha
  "prayANa","@n"


37.3 @Pattern @Matching - @Regular @Expressions ([37.4] [37.3.1] [37.2] [UP])

pichale anuccheda meM Hamane dekhA ki parla dvArA kisa prakAra eka @string ko
dUsare @string meM DhUMDhxA jA sakatA HE. mAnaleM ki dI gaI paMkti HE :-

  $_ = ' bundelo HaraboloM ke muzHa Hamane sunI kaHAnI thI';

tathA yadi yaHa jAnane kI jarUrata HE ki kyA isameM 'ma' se shurU Hone vAlA shabda
HE, to likha sakate HEM :-

/ ma/

isake atirikta parla meM diye Hue sAMcoM (pattern) ko DhUMDhane kI kSamatA
HE. isa anuccheda meM Hama sAMcoM ke viSaya meM sIkheMge. ye yUniksa ke
sAMcoM ke viSaya meM sIkheMge. ye yUniksa ke sAMcoM para HI AdhArita, unakA
HI vistRta rUpa HEM.


37.3.1 shurU va anta (^,$) ([37.4] [37.3] [37.3.2] [UP])

yadi kisI @string ko paMkti ke prAraMbha meM HI DhUDhxanA HE to likha sakate
HEM :-

  /^bundelo/

yaHa prathama shabda se mela khAegA. isI prakAra aMta meM DhUMDhane ke liye
likheMge :-

  /yI$/


37.3.2 koI bhI akSara (.) ([37.4] [37.3] [37.3.3] [37.3.1] [UP])

yadi sAMce meM koI bhI akSara A sakatA HE, to use `.' kI saHAyatA se likhA
jA sakatA HE. udAHaraNa ke liye nimna sAMcA usa shabda ko DhUMDhatA HE jisakA
prathama akSara kucha bhI Ho para `u' kI mAtrA ke sAtha Ho:-

  / .u/

ataZZZ yaHa ` bu' se milAna karegA.


37.3.3 akSara sUcI ([,]) ([37.4] [37.3] [37.3.4] [37.3.2] [UP])

yadi eka sUcI meM Ane vAle akSara ko DhUMDhanA HE to yaHa saralatA se kiyA jA
sakatA HE. udAHaraNArtha, `ma' yA `sa' se prArambha Hone vAle shabda ko DhUMDhanA
Ho to koSThaka meM DAlakara unakI sUcI banAI jA sakatI HE :-

  / [masa]/

yadi `u' kI mAtrA saHita prathama akSara meM `ma' yA `sa' ko DhUMDhanA Ho to
likheMge :-

  / [masa]u/

yaHa ` mu' (muzHa) se milAna karegA.

`ma' yA `sa' se bhinna akSara se prAraMbha Hone vAlA va `u' kI mAtrA saHita
shabda ko DhUMDhane ke liye likheMge :-

  / [^masa]u/

isa udAHaraNa meM yaHa `bu' se milAna karegA.ataZZZ jaHAz [..] akSaroM kI sUcI
detA HE, vaHIM [^..] diye Hue akSaroM ke atirikta anya sabhI kI sUcI batAtA
HE. (dhyAna deM ki `^' kA artha koSThaka meM tathA koSThaka ke bAHara bhinna HE.
koSThaka ke bAHara vaHa @string ke prAraMbha kA sUcaka HE jEsA ki paHale batAyA
jA cukA HE.)

`-' kI saHAyatA se krama meM Ane vAle akSaroM kI sUcI saralatA se bana sakatI
HE. jEse, yadi 0 se 4, va 7 se 9 ko DhUMDhanA Ho to likheMgeM :-

  /[0-47-9]/


37.3.4 punarAvRtti (*,+) ([37.4] [37.3] [37.3.3] [UP])

yadi kisI akSara yA sAzce kI punarAvRtti ko DhUMDhanA Ho to `*' kA prayoga
kiyA jA sakatA HE. yadi HameM `use' ke vibhinna rUpoM ko (jEse:- usane,
usako, ityAdi) ko DhUMDhanA Ho to likheMge:-

  / usa[^ ]+/

uparokta kA artha HE ki ` usa' ke pashcAta ` ' (space) ke atirikta koI bhI
akSara yA varNa eka yA eka se adhika bAra A sakatA HE. ataZZZ yaHa ` usa'
ko naHIM DhUMDhegA. yadi dinakara kI paMktiyAz HE :-

  $ =` kSamA kSematI usa bhujaMga ko jisake pAsa garala Ho'
         usakA kyA jo daMta HIna viSa raHita vinIta sarala Ho;

to yaHa sAMcA ` usakA' se mela khAegA.

'*' kA artha '+' jEsA HI HE. antara kevala itanA HI HE ki '*' shUnya yA
adhika bAra punarAvRtti kA dyotaka HE. ataZZZ vaHa shUnya @string (arthAt '') se
bhI mela khA sakatA HE. ataZZZ, sAzcA :-

  / usa[^ ]*/
   
' usa' se bhI mela khA sakatA HE (tathA ' usakA' se bhI). uparokta udAHaraNa meM,

  [^ ]*

shUnya @string se bhI mela khA sakatA HE, ataZZZ, ' usa' ke bAda shUnya @string
joDane se ' usa' HI banatA HE. sAtha HI yadi [^ ] kI punarAvRtti 



37.4 mela kA phala ([37.5] [37.3] [UP])

jaba kisI sAMce ko DhUzDhxA jAtA HE tathA saphalatA pUrvaka mela Ho jAtA HE to isakA
phala kucha visheSa @variables meM calA jAtA HE. udAHaraNa ke liye uparokta udAHaraNa
meM mela kiyA HuA @string ` usakA', nAmaka @variable meM parla dvArA rakhA jAtA
HE:-

  $& = ` usakA'

isase pUrva kA bhAga tathA bacA HuA bhAga bhI visheSa @variables meM rakha diyA jAtA HE :-

  $` = ' kSamA kSematI usa bhujaMga ko jisake pAsa garala Ho'
  $' = 'kyA jo daMta HIna viSa raHita vinIta sarala Ho'

ina @variables ke mUlya ko progrAma vAkya kI madada se upayoga meM lAyA jA 
sakatA HE. inako `@print' kiyA jA sakatA HE, inameM punaZZZ kisI sAMce ko 
DhUMDhxA jA sakatA HE, ityAdi. 

yadi mela kiye Hue sAMce ke kisI bhAga ko @variable meM rakhanA Ho, to usakI
bhI suvidhA upalabdha HE. udAHaraNa ke liye yadi HameM `usa' ke sAtha Aye Hue 
@suffix ko kisI @variable meM rakhanA Ho to likha sakate HEM :-

  / usa([^ ]+)/

jo HissA `(', `)' ke bIca meM HE, eka @variable visheSa meM ($1 meM)
calA jAtA HE. ataZZZ yaHAz para :-

  $1 = 'kA' 

yadi eka se adhika koSThaka HEM to kramashaZZZ $1, $2 ityAdi @variables
meM mela khAne vAle bhAga rakha diye jAte HEM.

udAHaraNa ke liye bhinna sAzce se :-

  / usa([^ ]*) + ([^ ]+)/

mela khAne ke bAda HogA :-

  $1 ='' 
  $2 = `bhujaMga'

bace Hue bhAga meM punaZZZ yaHI sAzcA DhUzDhane para mela khAne ke bAda HogA :-

  $1 = `kA'
  $2 = `kyA'



37.5 sAzcoM meM `yA' (`|') ([37.4] [UP])

yadi yaHa kaHanA Ho ki eka sAzcA yA anya to `|' kA upayoga kiyA jAtA HE jEse,
yadi `HIna' yA `raHita' ko DhUMDhanA Ho tathA usase pUrva Ane vAle shabda ko 
@variable meM rakhanA Ho to likheMge :-

  /(([^ ]+) *raHita)|(([^ ]+) *HIna)/

shurU meM `HIna' mela khAegA, kyoMki dI HuI kavitA meM 'HIna' paHale AtA
HE, ataZZZ HogA :-

  $2 ='' 
  $4 = 'daMta'

koSThakoM kI saMkhyA yA unako ginane kA tarIkA nIce diyA HuA HE:-

  /(([^ ]+) *raHita)|(([^ ]+) *HIna)/
   |^-----^      | |^-----^     |
   |  $2         | |  $4        |
   |             | |            |
   ^-------------^ ^------------^
        $1              $3

bace Hue bhAga meM ($') sAzce ko punaZZZ DhUzDhane para `raHita' vAlA bhAga mela 
khAegA :-

  $2 = `viSa'
  $4 ='' 

yaHAz yaHa dhyAna dene yogya bAta HE ki `(`, ')' kA eka upayoga HE:- mela khAe
Hue bhAga ko @variable meM rakhanA, tathA dUsarA upayoga HE @scope batAnA. ataZZZ
paHale va tIsare `(' kA uddeshya HE, `|' kA @scope batAnA. parla donoM kA
pAlana karatI HE, tathA $1 va $3 meM bhI upayukta mUlya rakha detI HE, bhale HI Hama
usakA upayoga kareM yA naHIM :-

  $1 = 'viSa raHita'
  $3 = ''        



Index Anusaaraka HOME PAGE