³¯Â¥: 1996-04-15 | ±Û¾´ÀÌ: µµ¾Æ | 7864 ¹ø | ÇÁ¸°Æ® | ¸ÞÀϷκ¸³»±â

Á¦ 15°­ - Á¦¾î±¸Á¶


º¸´Ù °ü½ÉÀÖ´Â °¡´É¼ºÀº Á¦¾î±¸Á¶¿Í ¼øȯ¹®À» ¼Ò°³ÇÒ ¶§ ¹ß»ýÇÑ´Ù. ÆÞÀº ¸¹Àº ¼­·Î´Ù¸¥ Á¾·ùÀÇ Á¦¾î¹®À» Áö¿øÇϸç, À̵éÀº 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 &lt; 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;
	}
}


´ÙÀ½±Û: Á¦ 16°­ - Á¶°Ç¹® (8536)1996-04-16
ÀÌÀü±Û: Á¦ 14°­ - CGIÀÇ Ãâ·Â (10020)1996-04-14

¼¼»ó»ç´Â À̾߱â



RSS ±¸µ¶ (À͸í | ȸ¿ø | °­Á | Æ÷·³)
(C) 1996 ~ 2017 QAOS.com All rights reserved.