Home Map Index Search News Archives Links About LF
[Top bar]
[Bottom bar]
[Photo of the Author]
/±Û¾´ÀÌ: Guido Socher

±Û¾´ÀÌ ¼Ò°³:

Guido´Â ¿À·§µ¿¾È ¸®´ª½º ÆÒÀ̾ú´Ù. ÃÖ±Ù ±×´Â LinuxFocusÀÇ ÆíÁýÀÚ·Î È°µ¿ÇÏ°í ÀÖ´Ù. ¿äÁò ±×´Â ÁýÀ» »õ·Ó°Ô ´ÜÀåÇÏ°í Á¤¿ø¿¡ »ø·¯µå¿Í ´Ù¸¥ °ÍµéÀ» ½É¾î Å°¿ì´Âµ¥ ¹«Ã´ ¹Ù»Ú´Ù.

Â÷·Ê:

Perl 1ºÎ

[Illustration]

Abstract:

ÀÌ ±ÛÀº Perl¿¡ °üÇÑ ¿¬Àç±â»çÀÇ Ã¹¹ø° ±ÛÀÔ´Ï´Ù. ÀÌ ±ÛÀ» Àбâ À§ÇØ º°µµÀÇ °øºÎ¸¦ ÇØ¾ß ÇÑ´ÙµçÁö ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. C³ª ÆĽºÄ®°ú °°Àº ÀýÂ÷Çü ÇÁ·Î±×·¥ ¾ð¾î¿¡ ´ëÇÑ ¾à°£ÀÇ Áö½ÄÀ» °¡Áö°í ÀÖ´Ù¸é PerlÀ» Á» ´õ ½±°Ô ÀÍÈú ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.



 

perlÀ̶õ?

PerlÀº Larry Wall¿¡ ÀÇÇØ °³¹ßµÈ ½ºÅ©¸³Æ®¾ð¾îÀÌ´Ù. Áï ¼Ò½ºÄÚµå·ÎºÎÅÍ ¹Ù·Î ½ÇÇàµÈ´Ù.perlÀº º¸Åë /usr/local/perl¿¡ ¼³Ä¡µÇ¾î ÀÖ´Ù. perlÀº ¾î¶² Á¡¿¡¼­ º¸¸é °íÀüÀÌ µÈ À¯´Ð½ºÇÁ·Î±×·¥ÀÎ awk, sed¿Í ºñ½ÁÇØ º¸ÀÌÁö¸¸ Â÷ÀÌÁ¡ÀÌ ºÐ¸íÀÖ´Ù. ¿À´Ã³¯ À¯ÇàÀÌ µÈ °´Ã¼ÁöÇâÇÁ·Î±×·¡¹ÖÀ» ÇѴٰųª ¶Ç´Â ±×·¡ÇÈ»ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¸¦ ¼³°èÇÒ ¶§¿¡µµ perlÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. PerlÀº ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ¸é ±× ±â´ÉÀ» ½±°Ô È®ÀåÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ¶óÀ̺귯¸®µéÀº CPAN¿¡ ¸ðµÎ Á¤¸®µÇ¾î ÀÖ´Ù. ÀÌ ±Û¿¡¼­´Â ¿¬ÀçÀÇ Ã³À½À̹ǷΠ±×·¸°Ô °í±ÞÁÖÁ¦±îÁö´Â ´Ù·çÁö ¾ÊÀ» °ÍÀÌ´Ù. ¸ÕÀú ¸î°¡Áö ±âº»ÀûÀÎ »çÇ×À» »ìÆ캸°í Á¡Â÷ ¹ßÀüµÈ °í±ÞÁÖÁ¦µéÀ» ´Ù·ç±â·Î ÇÏÀÚ.

PerlÀº ¸Å¿ì À¯¿ëÇÑ ½ºÅ©¸³Æ® ¾ð¾îÀÌ´Ù. ¾à°£ÀÇ ÇÁ·Î±×·¡¹Ö °¨°¢À» °¡Áö°í ÀÖÀ¸¸é ½±°Ô ÀÍÈú ¼ö ÀÖ´Â º¸ÆíÀû µµ±¸ÀÌ´Ù.

 

°£´ÜÇÑ ÇÁ·Î±×·¥

¿©±â ÇÁ·Î±×·¥ ¼Ò½º(my1stprg)¸¦ ´­·¯¼­ ¿©·¯ºÐÀÇ ÄÄÇ»ÅÍ¿¡ ÀúÀåÇϱ⠹ٶõ´Ù. ±×¸®°í ±ÇÇÑÀ» º¯°æÇØ ÁÖ±â À§ÇÏ¿©
chmod 755 my1stprg
¸í·ÉÀ» ½ÇÇàÇÑ´Ù. ±×¸®°í ´ÙÀ½°ú °°ÀÌ ½ÇÇàÇØ º¸±â ¹Ù¶õ´Ù.

#!/usr/bin/perl -w
print "What is your name?\n";
$name=<STDIN>;
#remove the new-line character:
chomp($name);
$len=length($name);
print "\nHello $name! Your name is $len characters long\n";

Äڵ带 »ìÆ캸ÀÚ. ù¹ø° ÁÙÀº ¸í·É¾î°¡ ¾Æ´Ï´Ù. "#!"·Î ½ÃÀÛÇÏ´Â ÁÙµéÀº º¸Åë À¯´Ð½º ½ºÅ©¸³Æ®ÀÇ Ã¹ÁÙ¿¡ »ç¿ëµÇ¸ç ¿î¿µÃ¼Á¦¿¡°Ô ÀÌ ÅؽºÆ®ÆÄÀÏÀ» ¾î¶»°Ô ½ÇÇàÇØ¾ß ÇÑ´Ù´Â Á¤º¸¸¦ ¾Ë·ÁÁØ´Ù. ù°ÁÙÀÌ ¾Æ´Ñ °÷¿¡¼­ #À¸·Î ½ÃÀÛÇÏ´Â ÁÙÀÌ ÀÖÀ¸¸é ±×°ÍÀº ÁÖ¼®¹®ÀÌ´Ù.(4¹ø° ÁÙÀ» º¸¸é ¾Ë ¼ö ÀÖ´Ù.) ¸ðµç ¹®ÀåÀº ¼¼¹ÌÄÝ·ÐÀ¸·Î ³¡³ª¾ß ÇÑ´Ù. º¯¼ö¸íÀº ´Þ·¯($)Ç¥½Ã·Î ½ÃÀÛÇÑ´Ù. PerlÀÇ º¯¼ö´Â ¹®ÀÚ³ª Á¤¼ö, ºÎµ¿¼Ò¼öÁ¡À» ¸ðµÎ ÃëÇÒ ¼ö ÀÖ´Ù. µ¥ÀÌÅÍÇüÀº º¯¼ö¿¡ »ç¿ëµÈ ³»¿ë¿¡ µû¶ó ÀÚµ¿À¸·Î ÀûÀýÇÑ ÇüÀ¸·Î ¹Ù²ï´Ù. $·Î ½ÃÀÛÇÏ´Â º¯¼ö¸¦ ½ºÄ®¶óÇü º¯¼ö(scalar variable)À̶ó°í ÇÑ´Ù. ¸¸¾à $´ë½Å @·Î ½ÃÀÛÇÑ´Ù¸é ±×°ÍÀº ¹è¿­À̸ç %·Î ½ÃÀÛÇϸé Çؽ¬Å×À̺íÀÌ´Ù. ÀÌ·¯ÇÑ º¯¼öÇü¿¡ ´ëÇؼ­´Â ´ÙÀ½È¸¿¡ ÀÚ¼¼È÷ »ìÆ캸µµ·Ï ÇÏ°Ú´Ù.
µÎ¹ø° ÁÙ¿¡ »ç¿ëµÈ printÇÔ¼ö´Â Ç¥ÁØÃâ·ÂÀ¸·Î ¹®ÀÚ¿­À» Ãâ·ÂÇÏ´Â ÇÔ¼öÀÌ´Ù. ÀÌ ÇÔ¼ö´Â ½©½ºÅ©¸³Æ®¿¡¼­ echo¸í·É°ú ºñ½ÁÇÏ´Ù. ¸¸¾à Å«µû¿ÈÇ¥¾È¿¡ º¯¼ö¸íÀÌ »ç¿ëµÇ¾úÀ¸¸é º¯¼öÀÇ ÇöÀç°ªÀ¸·Î ¹Ù²ï´Ù. ÀÛÀºµû¿ÈÇ¥¾ÈÀÇ º¯¼ö´Â ±× °ªÀ¸·Î ¹Ù²îÁö ¾Ê´Â´Ù.´Þ·¯Ç¥½Ã³ª µû¿ÈÇ¥¾È¿¡ µû¿ÈÇ¥¸¦ Ç¥½ÃÇÏ°íÀÚ ÇÒ °æ¿ì¿¡´Â ¿ª½½·¡½¬¸¦ ÀÌ¿ëÇÑ´Ù. ¿¹¸¦ »ìÆ캸ÀÚ:

#!/usr/bin/perl -w
$name="joe";
print "1 $name\n";
print '2 ', $name , "\n";
print '3 ', '$name',"\n";
print "4 \"$name\"\n";
print "5 \$name\n";
print "6 \"\$name\"\n";

°á°ú´Â ÀÌ·¸°Ô µÉ °ÍÀÌ´Ù.:

1 joe
2 joe
3 $name
4 "joe"
5 $name
6 "$name"

ù¹ø° ¿¹Á¦ÇÁ·Î±×·¥À» ´Ù½Ã »ìÆ캸ÀÚ. $name=<STDIN>;ÁÙ¿¡¼­ ÇÁ·Î±×·¥Àº »ç¿ëÀÚ°¡ ¿£ÅÍÅ°¸¦ Ä¥¶§±îÁö Å°º¸µå ÀÔ·ÂÀ»±â´Ù¸± °ÍÀÌ´Ù. ±× ´ÙÀ½ÁÙ¿¡ º¯¼ö $name¿¡´Â NL(newline)¹®ÀÚ±îÁö Æ÷ÇÔÇÑ »ç¿ëÀÚ ÀԷ°ªÀ» °¡Áö°í ÀÖ´Ù. chomp($name);´Â $nameÀÇ ÀÌ NL¹®ÀÚ¸¦ Á¦°ÅÇØÁØ´Ù. ¸¶Áö¸·À¸·Î lengthÇÔ¼ö´Â $nameÀÇ ±ÛÀÚ¼ö¸¦ ¾Ë·ÁÁØ´Ù.

ÀÌ ÇÁ·Î±×·¥¿¡´Â ¹ö±×°¡ ÀÖ´Ù. ¿©·¯ºÐÀÇ À̸§ ´ÙÀ½¿¡ ÅÇÀ̳ª °ø¹éÀ» ÀÔ·ÂÇØ º¸±â ¹ÙÇÑ´Ù. Àß ÀÛµ¿Çϴ°¡? ÀÌ ¹ö±×¸¦ ¾î¶»°Ô ÀâÀ» ¼ö ÀÖÀ»±î?
¸ÕÀú À̸§¿¡¼­ °ø¹éÀ» Á¦°ÅÇϱâ À§ÇÏ¿© ã±âÇÔ¼ö¿Í ¹Ù²Ù±âÇÔ¼ö°¡ ÇÊ¿äÇÏ´Ù. PerlÀº ¹®ÀÚ¿­À» ó¸®ÇÏ´Â ±â´ÉÀÌ ¸Å¿ì ¶Ù¾î³ª¸ç ÀÌ·¯ÇÑ ±â´ÉÀ» Á¤È®ÇÏ°Ô Á¦°øÇØ ÁØ´Ù. [ \t]´Â °ø¹éÀ̳ª ÅÇÀ» ³ªÅ¸³»´Â Á¤±ÔÇ¥Çö½ÄÀÌ´Ù. perl¿¡¼­´Â \s·Î °£´ÜÇÏ°Ô ³ªÅ¸³¾ ¼öµµ ÀÖ´Ù. (°ü·Ã±â»ç : Á¤±ÔÇ¥Çö½Ä). perlÀÇ ´ëü¸í·ÉÀº Á¤±ÔÇ¥Çö½ÄÀ» ÃëÇϹǷΠ³ª¸§´ë·ÎÀÇ ¹®¹ýÀ» °¡Áö°í ÀÖ´Ù.: $name=~ s/regexp/replacement/g; ¸¸¾à ¿©·¯ºÐÀÌ ´ëü¹®ÀåÀ» ±×´ë·Î ºñ¿öµÐ´Ù¸é Á¤±ÔÇ¥Çö½ÄÀº ¾Æ¹«°Íµµ ¾ø´Â °÷¸¶´Ù ÀÏÄ¡µÇ´Â °÷À» ã¾Ò´Ù´Â ½ÅÈ£¸¦ º¸³»ÁÙ °ÍÀÌ´Ù.ÀÌÁ¦ ¼öÁ¤ÇÑ ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°´Ù.:

#!/usr/bin/perl -w
print "What is your name?\n";
$name=<STDIN>;
#NL¹®ÀÚ¸¦ Á¦°ÅÇÑ´Ù.:
chomp($name);
print "\nHello $name!";
#¹®ÀÚ¿­¿¡¼­ °ø¹éÀ» Á¦°ÅÇÑ´Ù.:
$name=~s/\s//g;
$len=length($name);
print " Your name is $len characters long\n";

ÀÌ ÇÁ·Î±×·¥Àº »ç½Ç ·çÇÁ³ª if°°Àº Á¶°Ç¹®µî Á¦¾î¿¡ °üÇÑ ¹®ÀåÀÌ Çϳªµµ »ç¿ëµÇ¾î ÀÖÁö ¾Ê±â¶§¹®¿¡ º°·Î À¯¿ëÇÑ ÇÁ·Î±×·¥Àº ¾Æ´Ï´Ù. ¿¬À縦 ÅëÇÏ¿© ÀÌ ÇÁ·Î±×·¥À» Á¶±Ý¾¿ º¹ÀâÇÑ ÇÁ·Î±×·¥À¸·Î È®Àå½ÃÄѳª°¡µµ·Ï ÇÏ°Ú´Ù.

 

¹®¼­

ÀÌ ¿¬À縦 ÅëÇÏ¿© ¿©·¯ºÐÀº perlÀ» Çϳª¾¿ Çϳª¾¿ ÀÍÇô°¥ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ±×·¯³ª Á¶±Ý ¼º°ÝÀÌ ±ÞÇÑ µ¶ÀÚ¶ó¸é Âü°í ¼³¸í¼­(perlref-5.004.1.tar.gz)¸¦ ´Ù¿î·Îµå¹Þ¾Æ¼­ Àо´Â °Íµµ ±¦ÂúÀ» °ÍÀÌ´Ù. ÀÌ ¼³¸í¼­¿¡ µé¾î ÀÖ´Â READMEÆÄÀÏÀ» Àо¸é ¼³¸í¼­¸¦ ¾î¶»°Ô Ã¥ÀÚÀÇ ÇüÅ·ΠÀμâÇÒ ¼ö ÀÖ´ÂÁö µé¾îÀÖ´Ù.

¹°·Ð "man perl"°ú "man perlfunc"À» ÅëÇؼ­ ¾î¶² ÇÔ¼ö¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´ÂÁö ã¾Æº¼ ¼ö ÀÖ´Ù. ¿©±â¿¡ Á» ´õ ÀÚ¼¼È÷ °øºÎÇÏ°í ½Í´Ù¸é O'Reilly»ç¿¡¼­ ³ª¿Â "Learing Perl"µîÀ» Àо±â ¹Ù¶õ´Ù.


À¥ÆäÀÌÁö´Â ¸®´ª½ºÆ÷Ä¿½º ÆíÁýÆÀ¿¡¼­ °ü¸®ÇÕ´Ï´Ù.
© Guido Socher
LinuxFocus 1999