º¸´Ù °ü½ÉÀÖ´Â °¡´É¼ºÀº Á¦¾î±¸Á¶¿Í ¼øȯ¹®À» ¼Ò°³ÇÒ ¶§ ¹ß»ýÇÑ´Ù. ÆÞÀº ¸¹Àº ¼·Î´Ù¸¥ Á¾·ùÀÇ Á¦¾î¹®À» Áö¿øÇϸç, À̵éÀº CÀÇ Á¦¾î±¸Á¶¿Í À¯»çÇÑ °æÇâÀÌ ÀÖÁö¸¸ ÆĽºÄ®ÇÏ°íµµ ¾ÆÁÖ ºñ½ÁÇØ º¸ÀδÙ. ÀÌÁ¦ À̵é Áß ¸î¸îÀ» ³íÀÇÇÒ °ÍÀÌ´Ù.
foreach ¹®
»ç¿ëÇü½Ä
foreach( SCALAR) (LIST) {
STATEMENTS;
}
- SCALAR
- LISTÀÇ ´ÙÀ½ ¿ä¼Ò¸¦ ÇÒ´ç¹Þ¾Æ ºí·Ï³»¿¡¼ »ç¿ëµÇ´Â º¯¼ö. »ý·«µÇ¸é $_¸¦ »ç¿ë.
- LIST
- ºí·Ï³»¿¡¼ ÂüÁ¶ÇÒ ½ºÄ®¶ó º¯¼ö ¸ñ·Ï
- next, last¸¦ ÀÌ¿ëÇؼ Á¦¾î ¼ø¼¸¦ º¯°æÇÒ ¼ö ÀÖÀ¸¸ç, Áß°ýÈ£´Â »ý·«ÇÒ ¼ö ¾ø´Ù.
¼³¸í
¹è¿ÀÇ °¢ ¿ä¼Ò¸¦ ó¸®Çϰųª ¹è¿°ú À¯»çÇÑ ±¸Á¶(ÆÄÀÏÀÇ °¢Çà°ú °°Àº)¸¦ ó¸®ÇϱâÀ§ÇØ ÆÞÀº foreach ¹®À» »ç¿ëÇÑ´Ù. ÀÌ°ÍÀº ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î »ç¿ëµÈ´Ù.
foreach $morsel (@food){ # Â÷·Ê·Î ¹è¿ÀÇ °¢ Ç׸ñÀ» ¸®ÅÏÇϸç
# ¸®ÅÏµÈ Ç׸ñÀº $morsel¿¡ ÀúÀåµÈ´Ù.
print "$morsel\n"; # °¢ Ç׸ñÀ» Ãâ·Â
print "¿ì¿ì~~~\n"; # ±â³É
}
¸Å¹ø ¼öÇàµÇ´Â µ¿ÀÛÀº Áß°ýÈ£·Î °¨½Î¿©Áø´Ù. óÀ½¿¡´Â $morsel¿¡ ¹è¿ @foodÀÇ Ã¹ Ç׸ñÀÇ °ªÀÌ ÇÒ´çµÇ¸ç ºí·°¿¡ Àü´ÞµÈ´Ù. ´ÙÀ½ ¹ø¿¡´Â µÎ¹ø° Ç׸ñÀÇ °ªÀÌ ÇÒ´çµÈ´Ù. ÀÌ·¸°Ô ³¡±îÁö ¹Ýº¹µÈ´Ù. ¸¸¾à @food°¡ ºñ¾îÀÖ´Ù¸é ºí·°Àº °áÄÚ ¼öÇàµÇÁö ¾Ê´Â´Ù.
¿¹) env.pl
print "ÇöÀç ¼³Á¤µÈ ȯ°æº¯¼ö ¸ñ·ÏÀÔ´Ï´Ù.\n";
foreach $key (keys %ENV) {
print "$key = $ENV{$key}\n";
}
Á¶°Ç
ºñ±³¿¬»êÀÚ
¹®ÀÚ¿ |
¼³¡¡¸í |
¼ý¡¡ÀÚ |
eq |
°°À½ |
== |
ne |
°°Áö¾ÊÀ½ |
!= |
gt |
º¸´Ù Å |
> |
ge |
º¸´Ù Å©°Å³ª °°À½ |
>= |
lt |
º¸´Ù ÀÛÀ½ |
< |
le |
º¸´Ù À۰ųª °°À½ |
<= |
cmp |
-1,0,1À» ¸®ÅÏ |
<=> |
|
ºñ±³ ¿¬»êÀÚ´Â À߸ø »ç¿ëÇÑ´Ù ÇÏ´õ¶óµµ ¾î¶°ÇÑ "¹®¹ý"¿À·ù¸¦ ¹ß»ýÇÏÁö ¾Ê´Â´Ù. µû¶ó¼ ºñ±³ ¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¶§¿¡´Â ¹Ýµå½Ã ºñ±³ÇÏ·Á´Â ´ë»óÀÌ ¹®ÀÚÀÎÁö ¼ýÀÚÀÎÁö È®ÀÎÇØ¾ß ÇÑ´Ù.
ºñ±³¿¬»êÀÇ °á°ú´Â Ç×»ó Âü°ú °ÅÁþÀÌ´Ù. ÆÞ¿¡¼´Â "0"ÀÌ ¾Æ´Ñ °ª°ú °ø¹é ¹®ÀÚ¿ÀÌ ¾Æ´Ñ °ÍÀº ÂüÀ¸·Î °£ÁֵȴÙ. ¼ýÀÚ "0", ¹®ÀÚ "0", °ø¹é ¹®ÀÚ¿Àº °ÅÁþÀ¸·Î °£ÁֵȴÙ. ´ÙÀ½Àº ÆÞ¿¡¼ Âü°ú °ÅÁþÀÇ ¿¹ÀÌ´Ù.
#### ÂüÀÇ ¸î¸î ¿¹:
1; # ÀüÅëÀûÀÎ Âü
("a","b"); # ¸®½ºÆ®°¡ ¿ä¼Ò¸¦ °®´Â °æ¿ì
" "; # °ø¹éÀº ÂüÀÌ´Ù.
"hello"; # ¹®ÀÚ¿Àº ÂüÀÌ´Ù.
"00"; # ¹®ÀÚ¿
#### °ÅÁþÀÇ ¿©·¯ Ç¥Çö:
0; # ÀüÅëÀûÀÎ °ÅÁþ
(); # ºó ¸®½ºÆ®
""; # ³Î ¹®ÀÚ¿
"0"; # ¹®ÀÚ¿ "0"
³í¸®¿¬»êÀÚ
³í¸®¿¬»êÀÚ¸¦ »ç¿ëÇؼ ºñ±³¿¬»êÀ» ¼öÇàÇÏ´Â °Íµµ °¡´ÉÇÏ´Ù. ÆÞ¿¡¼ »ç¿ë°¡´ÉÇÑ ³í¸®¿¬»êÀÚ´Â ´ÙÀ½°ú °°´Ù.
¿¬»êÀÚ |
±â¡¡È£ |
¼³¡¡¸í |
A and B |
A && B |
A¿Í B°¡ ÂüÀ̸é Âü |
A or B |
A || B |
A, B Áß Çϳª°¡ ÂüÀ̸é Âü |
not A |
!A |
A°¡ ÂüÀÌ¸é °ÅÁþ, °ÅÁþÀ̸é Âü |
|
$a == $b # $a´Â $b¿Í °°Àº°¡(¼ýÀÚ)?
# ÁÖÀÇ: = ¿¬»êÀÚ°¡ ¾Æ´Ï´Ù.
$a != $b # $a´Â $b¿Í °°Áö ¾ÊÀº°¡(¼ýÀÚ)?
$a eq $b # I$aÀº $b¿Í °°Àº°¡(¹®ÀÚ)?
$a ne $b # I$aÀº $b¿Í °°Áö ¾ÊÀº°¡(¹®ÀÚ)?
¶ÇÇÑ ³í¸® AND, OR, NOTµµ »ç¿ëÇÒ ¼ö ÀÖ´Ù:
($a && $b) # $a¿Í $b°¡ ÂüÀΰ¡?
($a || $b) # $a³ª $bÁß Çϳª°¡ ÂüÀΰ¡?
!($a) # $a´Â °ÅÁþÀΰ¡?
³í¸®¿¬»êÀÚÀÇ »õ·Î¿î ¿ë¹ý
PerlÀ» Æ÷ÇÔÇؼ ºñ±³Àû ÃÖ±Ù¿¡ µîÀåÇÑ ¾ð¾î´Â ³í¸®¿¬»êÀÚ¸¦ Short Circuit(´Ü¶ôȸ·Î)·Î ÆÇÁ¤ÇÑ´Ù.
"(Á¶°Ç½Ä1) || (Á¶°Ç½Ä2)"¿¡¼ (Á¶°Ç½Ä1)ÀÌ ÂüÀ̸é ÀüüÀÇ Á¶°ÇÀº ¹«Á¶°Ç ÂüÀ̵ǹǷΠ(Á¶°Ç½Ä2)´Â Æò°¡ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. Áï, (Á¶°Ç1)ÀÌ ÂüÀ̸é (Á¶°Ç2)´Â ½ÇÇàµÇÁö ¾ÊÀ¸¸ç, (Á¶°Ç½Ä1)ÀÌ °ÅÁþÀ϶§¿¡¸¸ (Á¶°Ç½Ä2)°¡ ½ÇÇàµÈ´Ù.
open(F, "$file") || die "Error: $!";
À§ÀÇ ¹®ÀåÀº $fileÀ» ¿¼ö ¾øÀ¸¸é ¿À·ù¸Þ½ÃÁö¸¦ Ãâ·ÂÇÏ°í ÇÁ·Î±×·¥À» Á¾·áÇÏ´Â die ¹®À» ¼öÇàÇϰԵȴÙ.
AND ¿¬»êÀÚ(&&)µµ OR ¿¬»êÀÚ¿Í ¸¶Âù°¡Áö ¹æ¹ýÀ¸·Î Æò°¡µÈ´Ù.
-d $filename && die "$filename ...";
À§ÀÇ ¹®ÀåÀº $filenameÀÌ µð·ºÅ丮 À̸é die ¹®À» ¼öÇàÇϰԵȴÙ. µû¶ó¼ À§ÀÇ ¹®ÀåÀº ´ÙÀ½ ¹®Àå°ú ¿ÏÀüÈ÷ µ¿ÀÏÇÑ ¹®ÀåÀ̵ȴÙ.
if( -d $filename ){
die "$filenameÀº µð·ºÅ丮ÀÔ´Ï´Ù.\n";
}
¿¹) cat.pl
1: $filename = $ARGV[0];
2:
3: -d $filename && die "$filenameÀº µð·ºÅ丮ÀÔ´Ï´Ù.\n";
4: -e $filename || die "$filenameÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.\n";
5: -T $filename || die "$filenameÀº ÅؽºÆ® ÆÄÀÏÀÌ ¾Æ´Õ´Ï´Ù.\n";
6:
7: open(F, $filename) || die "$filenameÀ» ¿ ¼ö ¾ø½À´Ï´Ù.\n";
8: @lines = <F>;
9: close(F);
10: print @lines;
Á¶°Ç¿¬»êÀÚ
»ç¿ëÇü½Ä
(Á¶°Ç) ? do1 : do2
¼³¸í
Á¶°Ç¿¬»êÀÚ´Â c¿¡¼¿Í µ¿ÀÏÇÏ°Ô µ¿ÀÛÇÑ´Ù. Áï, Á¶°ÇÀÌ ÂüÀ̸é do1À» ½ÇÇàÇÏ°í, Á¶°ÇÀÌ °ÅÁþÀ̸é do2¸¦ ¼öÇàÇÑ´Ù.
¿¹
´ÙÀ½Àº 0¿¡¼ 9¿¡¼ Ȧ¼ö¸é odd¸¦ ¦¼ö¸é evenÀ» Ãâ·ÂÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.
1: for (0..9) {
2: $_ % 2 == 0 ? print "$_ = even\n" : print "$_ = odd\n";
3: }
for ¹®
»ç¿ëÇü½Ä
for ( INITIAL_EXPR ; COND_EXPR ; LOOP_EXPR ) {
STATEMENTS;
}
- INITIAL_EXPR
- ºí·Ï¿¡ Àü´ÞµÉ º¯¼ö¸¦ ÃʱâÈÇÑ´Ù.
- COND_EXPR
- STATEMENTS¸¦ ¼öÇàÇÑ ÈÄ, INITIAL_EXPR¿¡¼ ÃʱâÈÇÑ º¯¼ö°¡ Á¶°Ç¿¡ ¸Â´ÂÁö¸¦ °Ë»çÇÑ´Ù.
- LOOP_EXPR
- STATEMENTS¸¦ ¼öÇàÇÑ ÈÄ ÃʱⰪ¿¡´ëÇØ ÃëÇØÁö´Â ¿¬»êÀ» Á¤ÀÇÇÑ´Ù.
- STATEMENTS
- ºí·Ï³»¿¡¼ ¼öÇàµÉ ¹®Àå.
- next, last¸¦ ÀÌ¿ëÇؼ Á¦¾î ¼ø¼¸¦ º¯°æÇÒ ¼ö ÀÖÀ¸¸ç, Áß°ýÈ£´Â »ý·«ÇÒ ¼ö ¾ø´Ù.
for(LIST) {
STATEMENTS;
}
- LIST
- LISTÀÇ °¢°¢ÀÇ ¿ä¼Ò´Â ½Ã½ºÅÛ º¯¼ö $_¸¦ ÅëÇØ ºí·ÏÀ¸·Î Àü´ÞµÈ´Ù.
- STATEMENTS
- ºí·Ï³»¿¡¼ ¼öÇàµÉ ¹®Àå.
¿¹
for(0..1) { for(@arr, 'Jae-Geun, Kim', 33, 'age'){
print "¼øȯ¹®: $_\n"; print "¼øȯ¹®: $_\n";
} }
¼³¸í
ÆÞÀº CÀÇ for¹®À» Èä³»³½ for¹®À» °¡Áö°í ÀÖ´Ù. for¹®Àº ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î »ç¿ëµÈ´Ù.
for ($i = 0; $i < 10; ++$i){ # $i = 1·Î ½ÃÀÛ
# $i < 10 µ¿¾È ¹Ýº¹
# ¹Ýº¹Àü¿¡ $i¸¦ Áõ°¡
print "$i\n";
}
Á¦ÀϸÕÀú ¸ÕÀú ÃʱⰪ($i = 0)ÀÌ ¼öÇàµÈ´Ù. ±×¸®°í Á¶°Ç($i < 10)ÀÌ ÂüÀε¿¾È ºí·°ÀÌ ¼öÇàµÈ´Ù. ºí·°(print "$i\n";)ÀÌ ¼öÇà¸ç, À̶§¸¶´Ù Áõ°¡ºÐ(++$i)ÀÌ ÃëÇØÁø´Ù. µû¶ó¼ À§ÀÇ ¿¹´Â 0~9±îÁöÀÇ ¼ýÀÚ¸¦ Ãâ·ÂÇÏ´Â ¼øȯ¹®ÀÇ ¿¹ÀÌ´Ù.
while°ú until ¹®
»ç¿ëÇü½Ä
while ( EXPRESSION ) { untill( EXPRESSION ) {
STATEMENTS; STATEMENTS;
} }
- EXPRESSION
- ºí·ÏÀ» ¼öÇàÇÒ Á¶°ÇÀ̳ª Ç¥Çö½Ä. ºñ±³¿¬»êÀÚ¿Ü¿¡ Á¶°Ç¿¬»êÀÚµµ °¡´ÉÇÏ´Ù.
- STATEMENTS
- ºí·Ï³»¿¡¼ ¼öÇàµÉ ¹®Àå.
- DO°¡ »ý·«µÇ¾î ÀÖ´Â ¹®ÀåÀ̸ç, Á¶°ÇÀÌ °ÅÁþÀÎ °æ¿ì ¼øȯ¹®À» °áÄÚ ¼öÇàµÇÁö ¾Ê´Â´Ù.
do {
STATEMENTS;
} while (EXPRESSION);
- EXPRESSION
- ºí·ÏÀ» ¼öÇàÇÒ Á¶°ÇÀ̳ª Ç¥Çö½Ä. ºñ±³¿¬»êÀÚ¿Ü¿¡ Á¶°Ç¿¬»êÀÚµµ °¡´ÉÇÏ´Ù.
- STATEMENTS
- ºí·Ï³»¿¡¼ ¼öÇàµÉ ¹®Àå.
- Á¶°ÇÀÌ °ÅÁþÀÏÁö¶óµµ ÇѹøÀº ¼öÇàµÈ´Ù.
¼³¸í
´ÙÀ½Àº Å°º¸µå·ÎºÎÅÍ ÀÔ·ÂÀ» Àаí ÀÌ °ÍÀÌ ¿Ã¹Ù¸¥ ¾ÏÈ£À϶§±îÁö ¹Ýº¹ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.
1: #!/usr/local/bin/perl
2: print "¾ÏÈ£: "; # ¾ÏÈ£¿ä±¸ ¸Þ½ÃÁö Ãâ·Â
3: $a = <STDIN>; # Å°º¸µå·ÎºÎÅÍ ÀÔ·ÂÀ» ¹ÞÀ½
4: chop $a; # ÇೡÀÇ °³Ç๮ÀÚ Á¦°Å
5: while ($a ne "fred") # ÀÔ·ÂÀÌ Æ²¸®´Â µ¿¾È
6: {
7: print "Á×À»·¡, ´Ù½Ã ÇÒ·¡? "; # ¹Ýº¹ ¿ä±¸
8: $a = <STDIN>; # ´Ù½Ã ÀÔ·Â
9: chop $a; # °³Ç๮ÀÚ Á¦°Å
10: }
Áß°ýÈ£ ºí·°Àº ÀÔ·ÂÀÌ ¾ÏÈ£¿Í °°Áö ¾ÊÀº µ¿¾È ¼öÇàµÈ´Ù. while¹®Àº »ó´çÈ÷ ºÐ¸íÇÏÁö¸¸ ¿©±â¿¡´Â ¸î¸î ÁÖÀÇÇØ¾ß ÇÒ °ÍÀÌ ÀÖ´Ù. ¸ÕÀú ÆÄÀÏÀ» ¿Áö ¾Ê°íµµ Ç¥ÁØÀÔ·Â(Å°º¸µå)À¸·ÎºÎÅÍ ÀÐÀ» ¼ö ÀÖ´Ù. µÎ¹ø°·Î ¾ÏÈ£°¡ ÀÔ·ÂµÉ ¶§ $a´Â ³¡¿¡´Â °³Ç๮ÀÚ°¡ Æ÷ÇԵȴÙ. chop ÇÔ¼ö´Â ¹®ÀÚ¿ÀÇ ¸¶Áö¸· ¹®ÀÚ(ÀÌ°æ¿ì, °³Ç๮ÀÚ)¸¦ Á¦°ÅÇÑ´Ù.
µ¿ÀÏÇÑ ¹æ¹ý¿¡ ¹Ý´ëÀÇ Á¶°ÇÀ¸·Î ¼öÇàÇϱâÀ§ÇØ until¹®À» »ç¿ëÇÑ´Ù. while¹®Àº ÂüÀÎ µ¿¾È ºí·°À» ¼öÇàÇÏ´Â ¹Ý¸é¿¡ untill¹®Àº Ç¥ÇöÀÌ ÂüÀÏ ¶§±îÁö ¹Ýº¹ÀûÀ¸·Î ºí·°À» ¼öÇàÇÑ´Ù.
¶Ç ´Ù¸¥ À¯¿ëÇÑ ±â¹ýÀº whileÀ̳ª until¹®À» ¹®Àå ºí·°ÀÇ ½ÃÀÛÀÌ ¾Æ´Ï¶ó ¹®Àåºí·°ÀÇ ³¡¿¡´Ù µÎ´Â °ÍÀÌ´Ù. ÀÌ°ÍÀº ºí·°ÀÇ ½ÃÀÛÀ» Ç¥½ÃÇÏ°í ³¡¿¡¼ Á¶°ÇÀ» °Ë»çÇϱâÀ§ÇØ do ¿¬»êÀÚ¸¦ ÇÊ¿ä·Î ÇÑ´Ù. À§ÀÇ ¾ÏÈ£ ÇÁ·Î±×·¥¿¡¼ "Á×À»·¡, ´Ù½Ã ÇÒ·¡?"¶ó´Â ¸Þ½ÃÁö¸¦ ¾ø¾Ö·Á¸é ¼Ò½º¸¦ ´ÙÀ½°ú °°ÀÌ º¯°æÇÏ¸é µÈ´Ù.
#!/usr/local/bin/perl
do{
print "¾ÏÈ£: "; # ÀԷ¿äû
$a = <STDIN>; # ÀÔ·Â
chop $a; # °³Ç๮ÀÚ Á¦°Å
}while ($a ne "fred"); # ÀÔ·ÂÀÌ Æ²¸®´Â µ¿¾È À§ ºí·°À» ¹Ýº¹
next, last ¹®
last
ÀÌ °ÍÀº ¸¶Áö¸· ¹®ÀåÀ» ¼±¾ðÇÏ´Â °ÍÀÌ´Ù. Áï, Á¶°ÇÀÌ ¾ÆÁ÷ ÂüÀ̶ó°í ÇÒÁö¶óµµ ¼øȯ¹® ³¡±îÁö ¸ðµç ¹®ÀåÀ» ¹«½ÃÇÏ°í ¼øȯ¹®À» Á¾·áÇÑ´Ù.
# 10±îÁö ¼¼´Â ¹æ¹ý
$number = 0;
while(1) {
$number++;
if ($number >= 10 ) {
last;
}
}
next
¼øȯ¹®À» ´Ù½Ã ¹Ýº¹ÇÑ´Ù.
# 1~10Áß¿¡¼ ¦¼ö¸¸ Ãâ·Â
for(1..10){
if ($_ % 2 == 0 ) {
print "$_Àº ¦¼öÀÔ´Ï´Ù\n"
}else{
next;
}
}