ÀÓ ´ë È£(lawwal@way.co.kr) / Way-CGI ½Ã¸®Áî °³¹ßÀÚ
|
||||||||||||||||
¸®´ª½º¿Í ÇÔ²² ²ÙÁØÈ÷ ¹ßÀüÇØ¿Â Perl.
¥°. Perl ÀÔ¹® ÇÊÀÚ´Â Linux¸¦ Á¢Çϱâ ÀüºÎÅÍ PerlÀ» ÀÌ¿ëÇØ
¹èÆ÷¿ë CGI(http://way.co.kr)¸¦ À§½Ã·Î ÇÏ¿© °³¹ßÇØ¿ÔÀ¸¸ç, Linux¸¦
Á¢ÇÏ°Ô µÈ ÈĺÎÅÍ´Â Linux°¡ Perl ÇÁ·Î±×·¥ °³¹ß¿¡ ´õ¾øÀÌ Æí¸®ÇÑ
ȯ°æÀ» Á¦°øÇÑ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ¾ú´Ù. PerlÀÇ ±â´ÉÀº C¿¡¼ ¸¹ÀÌ ºô·Á¿ÔÀ¸¸ç sed³ª awk µîÀÇ ¹®ÀÚ¿ 󸮿ë ÇÁ·Î±×·¥¿¡¼µµ ¸¹Àº ±â´ÉÀ» °è¼öÇÏ¿´´Ù. ±×·¡¼ C¸¦ ¾î´À Á¤µµ ¾Ë°í ÀÖ´Â »ç¶÷ÀÌ Perl ¼Ò½º¸¦ Á¢ÇÏ°Ô µÇ¸é À¯»çÇÑ ¹®¹ý ¶§¹®¿¡ ´ë·«ÀûÀÎ À±°ûÀ» ÆľÇÇÒ ¼ö ÀÖ°Ô µÈ´Ù. ±×·¸´Ù°í PerlÀ» ¹è¿ì±â À§ÇØ ÀϺη¯ C¸¦ ¸ÕÀú ¹è¿ì´Â ¾î¸®¼®À½Àº ¹üÇÏÁö ¸»±â¸¦ ¹Ù¶õ´Ù. ¿äÁò ÇÊÀÚ´Â Linux¿¡¼ vi¿¡µðÅ͸¦ ÀÌ¿ëÇØ Perl ÇÁ·Î±×·¥À» °³¹ßÇÏ°í ÀÖ´Ù. ´ëºÎºÐÀÇ Linux ¹èÆ÷ÆÇÀº PerlÀÌ ±âº»ÀûÀ¸·Î ¼³Ä¡µÇ°í ·¹µåÇÞ µîÀÇ ¹èÆ÷ÆÇÀº rpm°ú °°Àº ¹ÙÀ̳ʸ® ÆÐÅ°Áö ÇüÅ·ΠÁ¦°øµÇ¾î ¼³Ä¡ ¹× °ü¸®°¡ °£ÆíÇÏ´Ù. ¸¸¾à PerlÀ» Á÷Á¢ ÄÄÆÄÀÏÇÏ¿© ¼³Ä¡ÇÏ·Á°Åµç http://www.perl.com/µî¿¡¼ ÆÄÀÏÀ» ´Ù¿î·ÎµåÇÏ¸é µÇÁö¸¸ ±¸Ã¼ÀûÀÎ ¼³Ä¡¹æ¹ýÀº Áö¸é°ü°è»ó »ý·«Çϱâ·Î ÇÑ´Ù. ¸¸¾à À©µµ¿ìÁî °è¿ÀÇ ¼¹ö¿¡¼ Å×½ºÆ®Çغ¸°í ½Í´Ù¸é http://way.co.krÀÇ ¡°CGI °Á¡± °Ô½ÃÆÇÀ» Âü°íÇϱ⠹ٶõ´Ù. ¸ÕÀú PerlÀÌ ¼³Ä¡µÇ¾îÀÖ´ÂÁö È®ÀÎÇغ¸ÀÚ. ´ëºÎºÐÀÇ °æ¿ì /usr/bin °æ·Î¿¡ perl ÇÁ·Î±×·¥ÀÌ À§Ä¡ÇÒ °ÍÀÌ´Ù. ·¹µåÇÞÀÇ °æ¿ì $ rpm -qa | grep perl ¸í·ÉÀ¸·Îµµ ¼³Ä¡¿©ºÎ¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù. perl -v¸¦ ÀÔ·ÂÇÏ¸é ¼³Ä¡µÈ PerlÀÇ ¹öÀüÁ¤º¸¸¦ ¾òÀ» ¼ö ÀÖÀ¸¸ç perl -V´Â Á»´õ »ó¼¼ÇÑ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ´Ù. $ perl -v This is perl, version 5.004_05 built for i386-linux Copyright 1987-1998, Larry Wall ÇÁ·Î±×·¡¹Ö ¾ð¾î Áß¿¡´Â C µî°ú °°ÀÌ ÄÄÆÄÀÏÀ» ÅëÇØ µ¶ÀÚÀûÀÎ ÆÄÀÏ Çϳª·Îµµ ÇÁ·Î±×·¥ ½ÇÇàÀÌ °¡´ÉÇÑ ¾ð¾î°¡ ÀÖ´Ù. ÇÏÁö¸¸ PerlÀº ÇÁ·Î±×·¥ ¼Ò½º¸¦ Çؼ®ÇÏ¿© ½ÇÇàÇØÁÖ´Â ÇÁ·Î±×·¥(ÀÎÅÍÇÁ¸®ÅÍ, interpreter)ÀÌ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß¸¸ ÇÏ°í ±× ¶§¹®¿¡ PerlÀ̳ª shell ½ºÅ©¸³Æ®´Â ¼Ò½ºÀÇ Ã¹ ¹ø° ÁÙ¿¡ #!/usr/bin/perl µî°ú °°ÀÌ Çؼ®¿ë ÇÁ·Î±×·¥ÀÇ À§Ä¡¸¦ Àû¾îÁÖ¾î¾ß ÇÏ´Â °ÍÀÌ´Ù. ±×·¯´Ï±î PerlÀÌ ¼³Ä¡µÇ¾îÀÖÁö ¾ÊÀº ¼¹ö¿¡¼´Â Perl ¼Ò½º ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¼ö ¾ø´Ù°í º¸¸é µÇ´Â °ÍÀÌ´Ù.(ÃÖ±Ù¿¡´Â ¼Ò½º¸¦ ÄÄÆÄÀÏ ÇÏ´Â ¹æ¹ýµµ Á¦°øµÇ°í ÀÖ´Ù.) 1. ½ÇÇà¹æ¹ý Perl ¼Ò½º ÇÁ·Î±×·¥¿¡ ½ÇÇà±ÇÇÑ(chmod +x)À»
ºÎ¿©ÇÏ°í ù ¹ø° ÁÙ¿¡ PerlÀÇ À§Ä¡¸¦ Àû¾îÁÙ °æ¿ì ´ÙÀ½°ú °°ÀÌ
ÇÁ·Î±×·¥¸í¸¸À¸·Î Á÷Á¢ ½ÇÇà½Ãų ¼ö ÀÖ´Ù. $ program(ÇÁ·Î±×·¥¸í) ÇöÀç °æ·Î°¡ PATH¿¡ °É·ÁÀÖÁö ¾Ê´Ù¸é ./program°ú
°°ÀÌ ½ÇÇàÇÏ¿©¾ß ÇÑ´Ù. $ perl ÇÁ·Î±×·¥¸í ÀÛ¼ºµÈ ¼Ò½ºÄÚµåÀÇ ¿À·ù¸¦ Á¡°ËÇϱâ À§Çؼ´Â
perl -c ¿É¼ÇÀ» ÀÌ¿ëÇÑ´Ù. $ perl -c ÇÁ·Î±×·¥¸í
2. ÇÁ·Î±×·¥ ¸Àº¸±â PerlÀÌ ½Ã½ºÅÛ¿¡ ¼³Ä¡µÇ¾îÀÖ´Ù¸é ÀÌÁ¦ºÎÅÍ °£´ÜÇÑ Perl ¹®¹ýºÎÅÍ ÀÍÇôº¸µµ·Ï ÇÏÀÚ. print ¡°Hello, Way!¡¬n¡±; °£´ÜÇϸ鼵µ ¿Ïº®ÇÑ ÇϳªÀÇ ÇÁ·Î±×·¥ÀÌ´Ù. vi µîÀÇ ÆíÁý±â¿¡ ¼Ò½º³»¿ëÀ» ÀÔ·ÂÇÏ¿© ÀúÀåÇÑ ÈÄ ½ÇÇàÇØ º¸ÀÚ. $ perl hello(ÆÄÀϸí) ¼Ò½º¸¦ ºÐ¼®Çغ¸¸é, ¡°Hello, Way!¡±¶ó´Â ¹®ÀÚ¿°ú ÇÔ²² ÁÙ ¹Ù²Þ ¹®ÀÚ(¡¬n)¸¦ Ãâ·ÂÇÏ´Â °ÍÀÌ¸ç °¢ ÁÙÀÇ ³¡Àº ;(¼¼¹ÌÄÝ·Ð) ±âÈ£·Î ¸¶¹«¸®ÇÑ´Ù.
3. º¯¼ö¿Í ±âº»¿¬»ê ´Ù¸¥ ¾ð¾îµé°ú´Â ´Þ¸® º¯¼öÇüÀ» ÁöÁ¤ÇÒ ÇÊ¿ä ¾øÀÌ ´ëÀÔ°ú µ¿½Ã¿¡ º¯¼öÇüÀÌ °áÁ¤µÈ´Ù. º¯¼ö´Â $±âÈ£·Î ½ÃÀÛµÇ¸ç ¹è¿ÀÇ °æ¿ì @, Á¶ÇÕ¹è¿(hash)Àº %±âÈ£·Î ½ÃÀ۵ȴÙ. $bom = 123; °ú °°ÀÌ $bom º¯¼ö¿¡ 123À̶ó´Â Á¤¼ö¸¦ ´ëÀÔÇÏ°Ô µÇ¸é º°µµÀÇ Á¶Ä¡ ¾øÀÌ Á¤¼öÇüÀ» °®°Ô µÈ´Ù. º¯¼ö°£ÀÇ ¿¬»êµµ ¸Å¿ì ÀÚÀ¯·Ó´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°Àº °æ¿ì °á°ú°ªÀº Á¤»óÀûÀÎ ¼öÄ¡ ¿¬»ê°á°úÀÎ 100ÀÌ Ãâ·ÂµÈ´Ù. $bom = 49; # Á¤¼ö perl ¹®¹ý»ó # ±âÈ£ ÀÌÈĺÎÅÍ´Â ÁÖ¼®À¸·Î ÀνÄÇÑ´Ù.
¿¹»óÇϵíÀÌ Perl¿¡¼´Â »çÄ¢¿¬»ê¿¡ +, -, *, / ±âÈ£°¡ ÀÌ¿ëµÇ¸ç
³ª¸ÓÁö(°è¼ö)¿¡´Â % ±âÈ£°¡ »ç¿ëµÈ´Ù. $bom = 100; # Á¤¼ö print $bom . $danvi; ¿Í °°ÀÌ ¹®ÀÚ¿ ¿¬»êÀÚ¸¦ ÀÌ¿ëÇÏ¸é ¡°100200¡±ÀÌ Ãâ·ÂµÇ°í print $bom + $danvi; ¿Í °°ÀÌ ¼öÄ¡¿¬»êÀÚ¸¦ ÀÌ¿ëÇϸé 300ÀÌ Ãâ·ÂµÈ´Ù.
4. Á¶°Ç¹® if (Á¶°Ç) { ÂüÀÏ ¶§; } µÎ °³ ÀÌ»óÀÇ Á¶°Ç¹®Àº elsif(¡°elseif¡±°¡ ¾Æ´Ô¿¡ ÁÖÀÇ)¸¦ ÀÌ¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ±¸¼ºÇÒ ¼ö ÀÖ´Ù. if (Á¶°Ç) { ÂüÀÏ ¶§; } Á¶°ÇÆǺ°À» À§ÇÑ ¿¬»êÀڷμ ==(eq)´Â ÀÏÄ¡, !=(ne)´Â ºÒÀÏÄ¡·Î »ç¿ëµÇ¸ç <, >, <=, >= µîÀÇ ±âÈ£¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ³í¸®¿¬»êÀڷμ &&(and), ||(or), !(not)µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù.(±âÈ£¿Í ¿µ¹® ¸ðµÎ »ç¿ëÇÒ ¼ö ÀÖ´Ù.) $bom = 5; ¼Ò½º¸¦ ½ÇÇàÇغ¸¸é ´ç¿¬È÷ ¡°10º¸´Ù´Â ÀÛ°í 3º¸´Ù´Â Å©´Ù.¡±°¡ Ãâ·ÂµÉ °ÍÀÌ´Ù. if¿Í´Â ¹Ý´ë·Î »ç¿ëµÇ´Â Á¶°Ç¹®À¸·Î´Â unless°¡ ÀÖ´Ù. unless (Á¶°Ç) { °ÅÁþÀÏ ¶§; }
5. ¹Ýº¹¹® while (Á¶°Ç) { Á¶°ÇÀÌ ÂüÀÎ µ¿¾È ½ÇÇà; } $bom = 1; ÃʱâÀÇ $bomÀÇ °ªÀº 1À̾ú°í ÇØ´ç °ªÀÌ 10º¸´Ù À۱⠶§¹®¿¡ while¹®ÀÇ Á¶°Ç¿¡ ÀÏÄ¡ÇϹǷΠÁß°ýÈ£({}) °¡ ½ÇÇàµÈ´Ù. Áß°ýÈ£·Î 󸮹æÇâÀÌ ³Ñ°ÜÁø ÈÄ print ¹®¿¡ µû¶ó $bomÀÇ °ªÀÎ 1ÀÌ Ãâ·ÂµÈ´Ù. ¸¸¾à $bom++; ¿Í °°ÀÌ $bom °ªÀ» º¯È½ÃÄÑÁÖÁö ¾Ê´Â´Ù¸é $bom °ªÀº ¿µ¿øÈ÷ 1ÀÏ °ÍÀ̹ǷΠ¹«ÇÑ·çÇÁ°¡ µÇ¾î¹ö¸± °ÍÀÌ´Ù. $bom++ ´Â ÀÚµ¿Áõ°¡¸¦ ¶æÇÏ´Â °ÍÀ¸·Î¼ ¿ø·¡ÀÇ $bom °ª¿¡ 1À» °¡»êÇÑ ÈÄ ´Ù½Ã $bom¿¡ °ªÀ» ÀúÀåÇÏ°Ô µÇ´Â °ÍÀÌ´Ù. $bom-- ´Â ±× ¹Ý´ëÀÌ´Ù. ·çÇÁ¸¦ Çѹø µ¹°ÔµÇ¸é $bom °ªÀº 2°¡ µÇ°í Çѹø¾¿ ´õ µ¹ ¶§¸¶´Ù 3, 4, 5, 6, 7, 8, 9, 10ÀÌ µÈ´Ù. $bom °ªÀÌ 10ÀÏ °æ¿ì 10À» Ãâ·ÂÇÏ°í $bom++ ¿¡ µû¶ó $bom °ªÀÌ 11ÀÌ µÇ¸é¼ while¹®ÀÇ Á¶°Ç¿¡ ¸ÂÁö ¾Ê¾Æ ·çÇÁ´Â °á±¹ Á¾·áµÈ´Ù. ¶Ç´Ù¸¥ ¹Ýº¹¹®À¸·Î´Â for¹®ÀÌ ÀÖ´Ù. for (ÃʱⰪ; Á¶°Ç; º¯È°ª) { Á¶°ÇÀÌ ÂüÀÎ µ¿¾È ½ÇÇà; } ´ÙÀ½ ¼Ò½º´Â ¾Õ¼ ¼³¸íÇÑ while¹®ÀÇ ¿¹Á¦¿Í µ¿ÀÏÇÑ °á°ú¸¦ º¸ÀÌ°Ô µÈ´Ù. for ($bom = 1; $bom <= 10; $bom++) { ¹Ýº¹¹®Áß¿¡´Â foreach¹®µµ ÀÖÀ¸³ª ¹è¿°ú °ü·ÃÇÏ¿© ÁÖ·Î »ç¿ëµÇ¹Ç·Î ¼³¸íÀ» µÚ·Î ¹Ì·ç±â·Î ÇÏ°Ú´Ù.
6. ÆÄÀÏ Çڵ鸵 ÆÄÀÏÀ» Àаųª ÀúÀåÇϱâ À§Çؼ´Â ÆÄÀÏÀ» ¿¾î¾ßÇϸç ÀϹÝÀûÀ¸·Î ´ÙÀ½°ú °°Àº ±ÔÄ¢¿¡ ÀÇÇØ »ç¿ëµÇ¾îÁø´Ù. open(ÆÄÀÏÇÚµé, ¡°[Á¶ÀÛ¹æ¹ý] ÆÄÀÏ¸í¡±); ¡®ÆÄÀÏÇڵ顯Àº »ç¿ëÀÚÀÇ ½Äº°À» ¿ëÀÌÇÏ°Ô Çϱâ À§ÇØ ÀÓÀÇ·Î ÁöÁ¤ÇÏ¿© »ç¿ëÇÑ´Ù. ¡®Á¶ÀÛ¹æ¹ý¡¯¿¡´Â ÀбâÀü¿ë(< ¶Ç´Â »ý·«), ¾²±â(>), µ¡ºÙÀ̱â(>>) µîÀÌ ÀÖ´Ù. open(FILE, ¡°>bom¡±); ºÐ¼®Çغ¸¸é ´ÙÀ½°ú °°´Ù. open(FILE, ¡°>bom¡±); bomÀ̶ó´Â ÆÄÀϸíÀ¸·Î ÆÄÀÏÀ» ¾²±â¸ðµå·Î ¿µÇ ÆÄÀÏÇÚµéÀº FILE·Î ÁöÁ¤ÇÑ´Ù. print FILE ¡°Way¡¬n¡±; FILEÀ̶ó´Â ÆÄÀÏÇÚµé(½ÇÁ¦·Î´Â bomÀ̶ó´Â ÆÄÀÏ)¿¡ ¡°Way¡¬n¡±¶ó´Â ¹®ÀÚ¿À» ±â·ÏÇÑ´Ù. close(FILE); FILE À̶ó´Â ÇÚµéÀÇ ÆÄÀÏÀ» ´Ý´Â´Ù. Á¶ÀÛÀÌ ³¡³ª´Â Áï½Ã ´Ý´Â °Ô ¹Ù¶÷Á÷ÇÏ´Ù. ¾Õ¿¡¼ ¾Ë ¼ö ÀÖµíÀÌ ÆÄÀÏÇÚµéÀ» »ç¿ëÇÔÀ¸·Î
Çؼ ƯÁ¤ ÆÄÀÏ¿¡ print(±â·Ï)ÇÏ°í, ¼Õ½±°Ô ÆÄÀÏÀ» ´ÝÀ» ¼ö ÀÖ°Ô
µÈ´Ù. ÀÌÁ¦ ´ÙÀ½°ú °°Àº ¼Ò½º¸¦ ÀÛ¼ºÇÏ¿© ½ÇÇàÇغ¸ÀÚ. open(FILE, ¡°>>bom¡±); Ưº°ÇÑ ¹®Á¦°¡ ¾ø´Â ÇÑ bomÀ̶ó´Â ÆÄÀϳ»¿ëÀº ´ÙÀ½°ú °°À» °ÍÀÌ´Ù. $ cat bom ÀúÀåÇÏ´Â ¹æ¹ýÀ» ¾Ë¾ÒÀ¸´Ï ÀÌÁ¦ ÀÐ¾î ¿À´Â ¹æ¹ýÀ»
¾Ë¾Æº¸ÀÚ. <FILE>ÀÌ ¾î¶² ±â´ÉÀ» ÇÏ´ÂÁö ±Ã±ÝÇÒ °ÍÀÌ´Ù. <FILE>¿¡¼ FILEÀº ¾Õ¿¡¼¿Í ¸¶Âù°¡Áö·Î ÆÄÀÏÇÚµéÀ̸ç <>(¡®ÁÙÀÔ·Â ¿¬»êÀÚ¡¯¶ó°íµµ ÇÑ´Ù.)·Î ¹À̹ǷΠÇؼ ÇÑ ÁÙÀ» ÀÐ¾î ¿Â´Ù´Â ¶æÀÌ´Ù. $line1= <FILE>; $line2 = <FILE>; open(FILE, ¡°bom¡±); ¾à°£ º¹ÀâÇÏ°Ô ´À²¸Áú ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ùÁÙ°ú ¸¶Áö¸· ÁÙÀº ¼³¸íÀÌ ÇÊ¿ä ¾øÀ» µí ÇÏ¿© °¡¿îµ¥ºÎºÐ¸¸ ¼³¸íÇϵµ·Ï ÇÏ°Ú´Ù. while¹®Àº ÂüÀÏ °æ¿ì ¹Ù·Î µÚ¿¡ À§Ä¡ÇÑ Áß°ýÈ£({})°¡ ½ÇÇàµÈ´Ù. Perl¿¡¼´Â ¾Æ¹«·± °ªÀÌ ¾øÀ» °æ¿ì ¡®°ÅÁþ¡¯À» µ¹·ÁÁֹǷΠbom À̶ó´Â ÆÄÀÏÀ» ¸ðµÎ Àоî¿À°í ³ª¸é while ·çÇÁ°¡ Á¾·áµÇ´Â °ÍÀÌ´Ù. ¾à°£ ´õ ¼³¸íÀ» µ¡ºÙÀÌÀÚ¸é, $line = <FILE> ÀÌ ÂüÀÏ °æ¿ì(Àоî¿Ã ÁÙÀÌ ÀÖÀ» °æ¿ì´Â ÂüÀÌ µÈ´Ù.) $line º¯¼ö¿¡ Àоî¿Â ÁÙÀÇ ³»¿ëÀ» ÀúÀåÇÏ°í ¹®ÀÚ¿¿¬»êÀÚ(.)¿¡ ÀÇÇØ $all_line º¯¼ö¿¡ Ãß°¡µÇ¸ç, ÆÄÀÏ ³¡±îÁö ÀÐ°í ³ª¸é Àоî¿Ã ÁÙÀÌ ¾ø¾î °ÅÁþÀ» ¸®ÅÏ ÇϹǷΠwhile ·çÇÁ°¡ Á¾·áµÇ´Â °ÍÀÌ´Ù. ´ÙÀ½°ú °°ÀÌ °£´ÜÈ÷ ³ªÅ¸³¾ ¼öµµ ÀÖ´Ù. open(FILE, ¡°bom¡±); $all_line .= $_ ºÎºÐÀº $all_line = $all_line . $_¿Í µ¿ÀÏÇÑ °á°ú¸¦ º¸ÀδÙ. ÀÌÁ¦ ƯÁ¤ÆÄÀÏÀÇ ³»¿ëÀ» ÀÐ¾î º¯¼ö¿¡ ÀúÀåÇÏ¿´À¸¸ç À̷νá Á¶ÀÛÀÌ °¡´ÉÇÏ°Ô µÇ¾ú´Ù. ÆÄÀÏÀ» ¿°Å³ª Á¶ÀÛÇÏ°íÀÚ ÇÒ ¶§ ¹ß»ýÇÒ ¼ö ÀÖ´Â ¿À·ù¸¦ ¹Ì¸® ¿¹¹æÇÏ°í ÆÄÀÏ(¶Ç´Â µð·ºÅ丮)¿¡ °üÇÑ Á¤º¸¸¦ ¾ò¾î È°¿ëÇϱâ À§ÇØ PerlÀº ´Ù¾çÇÑ ÆÄÀÏÅ×½ºÆ® ¿¬»êÀÚ¸¦ Á¦°øÇÑ´Ù. ÁÖ¿ä ¿¬»êÀÚ´Â ´ÙÀ½°ú °°´Ù.
if (-e ¡°bom¡±) { print ¡°ÆÄÀÏ ÀÖÀ½¡¬n¡±;
} print ¡°bom ÆÄÀÏÀÇ Å©±â´Â ¡°, -s ¡°bom¡±, ¡° byteÀÔ´Ï´Ù.¡¬n¡±;
7. ÇÔ¼ö ±¸Á¶ÀûÀÎ ÇÁ·Î±×·¥À» À§ÇØ, ƯÈ÷ ºó¹øÈ÷ »ç¿ëµÇ´Â ƯÁ¤ ±â´ÉÀ̳ª ó¸®ÀýÂ÷¸¦ ÇϳªÀÇ ÇÔ¼ö·Î »ý¼ºÇÏ¿© È°¿ëÇÒ ¼ö ÀÖ´Ù. ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ ±¸¼ºµÇ¸ç &ÇÔ¼ö¸í°ú °°ÀÌ È£ÃâÇÑ´Ù. ÇÔ¼ö´Â Áß°ýÈ£({})·Î ¹À̸ç ÇÔ¼ö¿µ¿ª ³»¿Ü¸¦ ºÒ¹®ÇÏ°í »ç¿ëµÇ¾îÁö´Â ¹®¹ýÀº µ¿ÀÏÇÏ´Ù. sub ÇÔ¼ö¸í { 󸮳»¿ë; } ¾Õ¼ ¼³¸íÇß´ø for¹®À» ÀÌ¿ëÇØ ÇÔ¼ö¸¦ Àû¿ëÇغ¸°Ú´Ù. for ($bom = 1; $bom <= 10; $bom++) { sub job { print ¡°===============¡¬n¡±; } ¼Ò½º¸¦ ½ÇÇàÇغ¸¸é 1ºÎÅÍ 10±îÁö Ãâ·ÂµÇ´Â °úÁ¤Áß ¼ýÀÚ »çÀÌ»çÀÌ¿¡ ±¸ºÐ¼±ÀÌ ±×¾îÁú °ÍÀÌ´Ù. ÀÌ·± ¿ëµµÀÇ ÇÔ¼ö´Â ÀÛ¾÷À» Á»´õ °£°áÈ÷ ÇÏ´Â Á¤µµÀÇ È¿°ú¹Û¿¡ ±â´ëÇÒ ¼ö ¾øÁö¸¸, ´ÙÀ½°ú °°Àº °æ¿ì È£Ãâ½Ã &ÇÔ¼ö¸í(¡°³Ñ±æ°ª¡±)°ú °°ÀÌ ÀÎÀÚ¸¦ ³Ñ±â°í È£ÃâµÈ ÇÔ¼ö¿¡¼´Â ³Ñ°Ü¹ÞÀº ÀÎÀÚ¸¦ °è»ê(ó¸®)ÇÏ¿© °á°ú¸¦ ¸®ÅÏÇϰԵǴ ¿ÏÀüÇÑ ÇÔ¼öÀÇ ÇüŸ¦ ¶ç°Ô µÈ´Ù. for ($bom = 1; $bom <= 10; $bom++) { sub job { ¼Ò½º¸¦ ½ÇÇàÇغ¸¸é 10, 20, 30, ... °ú °°ÀÌ $bom °ª¿¡ 10À» °öÇÑ °ªÀÌ ¼ø¼´ë·Î Ãâ·ÂµÈ´Ù.
8. ¹è¿ ¿©·¯ °³ÀÇ °ªµéÀ» ÇϳªÀÇ º¯¼ö¿¡ ÀúÀåÇÏ¿© È°¿ëÇϱâ À§ÇØ ¹è¿(array)°ú Á¶ÇÕ¹è¿(hash)ÀÌ Áö¿øµÈ´Ù. µÑÀÇ Â÷ÀÌÁ¡Àº À妽º(index)°¡ ¼ýÀÚÀΰ¡ ±×·¸Áö ¾ÊÀº°¡ ÀÌ´Ù. ¹è¿¿¡ °ªµéÀ» Á÷Á¢ ´ëÀÔÇÏ´Â ¹æ¹ýÀº °ýÈ£¸¦
ÀÌ¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌÇÑ´Ù. ¹è¿´ëÀÔÀº ´ÙÀ½°ú °°ÀÌ °³º°ÀûÀ¸·Îµµ °¡´ÉÇÏ´Ù. ¹è¿À» ÀϹݺ¯¼öÇüÅ·ΠÃßÃâÇϱâ À§Çؼ´Â ´ÙÀ½°ú
°°ÀÌ »ç¿ëÇÑ´Ù. ù ¹ø° °ªÀÇ ¹è¿¹øÈ£´Â 0ÀÌ´Ù. µû¶ó¼ $way[0]¿¡´Â 1ÀÌ, $way[1]¿¡´Â 2°¡ ÀúÀåµÇ¾î ÀÖ´Â °ÍÀÌ´Ù. ¹è¿¿¡¼ °ªÀ» ÃßÃâÇÏ¿© ¶Ç ´Ù¸¥ º¯¼ö¿¡ ÀúÀåÇغ¸ÀÚ. ¶Ç ´Ù¸¥ ¹æ¹ýÀ¸·Î´Â ´ÙÀ½°ú °°Àº ¹æ¹ýµµ Á¸ÀçÇÑ´Ù. Á¶ÇÕ¹è¿Àº %±âÈ£¸¦ »ç¿ëÇÏ¸ç ¼ýÀÚÀ妽º ´ë½Å ÀÓÀÇÀÇ ¹®ÀÚ¿(key)À» À妽º·Î °®´Â´Ù. µû¶ó¼ ÀúÀåµÈ ¼ø¼´Â ±×´ÙÁö Å« Àǹ̰¡ ¾ø´Ù. %way = (¡°»¡°¡± => ¡°red¡±, ¾Õ¼ ¼³¸íÇÑ ¹è¿°ú µ¿ÀÏÇÑ ¹æ¹ýÀ¸·Î ´ëÀÔÇÏ¿´Áö¸¸ ÁÖÀÇ ±í°Ô °üÂûÇÒ ºÎºÐÀº => ±âÈ£¸¦ ÀÌ¿ëÇؼ key¿Í value·Î ±¸¼ºµÈ´Ù´Â °ÍÀÌ´Ù. ¸¶Âù°¡Áö·Î $way{¡®»¡°¡¯} = ¡°red¡±; ¿Í °°Àº ¹æ½ÄÀ¸·Î °³º°ÀûÀÎ ÀúÀåµµ °¡´ÉÇÏ´Ù. ÀڷḦ ÃßÃâÇϱâ À§Çؼ´Â ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÏ¸é µÈ´Ù. $way{key} $way{¡®»¡°¡¯} ¿¡´Â ¡°red¡±°¡, $way{¡®ÆĶû¡¯}¿¡´Â ¡°blue¡±°¡ ÀúÀåµÇ¾î ÀÖ´Ù. º¸Åë => ±âÈ£ ´ë½Å ,(comma)¸¦ »ç¿ëÇϱ⵵ ÇÏÁö¸¸ °¡µ¶¼ºÀ» ³ôÀ̱â À§ÇØ => ±âÈ£¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. print ¡°ÆĶû»öÀº ¿µ¹®À¸·Î $way{¡®ÆĶû¡¯}ÀÔ´Ï´Ù.¡¬n¡±; ¼Ò½º°¡ ½ÇÇàµÇ¸é ¡°ÆĶû»öÀº ¿µ¹®À¸·Î blueÀÔ´Ï´Ù.¡±°¡
Ãâ·ÂµÉ °ÍÀÌ´Ù. ÀÌÁ¦ ¾Õ¿¡¼ ¼³¸íÀ» ¹Ì·ð´ø foreach¹®¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. foreach ÃßÃâ°ª (¹è¿ ¶Ç´Â ¸ñ·Ï) { ½ÇÇ࿵¿ª; } ¹è¿°ªÀ» Çϳª¾¿ ÃßÃâÇÏ°í ±×¶§¸¶´Ù Áß°ýÈ£·Î ¹ÀÎ ½ÇÇ࿵¿ªÀ» °ÅÄ¡°Ô µÈ´Ù. ¹è¿ÀÇ ¸ðµç ¿ø¼Ò°¡ ÃßÃâµÇ°í ³ª¸é ·çÇÁ´Â Á¾·áµÈ´Ù. @bom = (¡°º½¡±, ¡°¿©¸§¡±, ¡°°¡À»¡±, ¡°°Ü¿ï¡±); ¼Ò½º¸¦ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°ÀÌ Ãâ·ÂµÉ °ÍÀÌ´Ù. 1, º½ foreach¹®Àº ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. °á°ú´Â ¾ÕÀÇ °á°ú¿Í µ¿ÀÏÇÏ´Ù. foreach $danvi (¡°º½¡±,¡±¿©¸§¡±,¡±°¡À»¡±,¡±°Ü¿ï¡±)
{ ¹è¿Àº @way = (); ¶Ç´Â %way = (); ¿Í °°ÀÌ ÃʱâÈÇÒ ¼ö ÀÖ´Ù. ¹è¿¿¡ ¿ø¼Ò¸¦ Ãß°¡ÇÏ°íÀÚ ÇÒ °æ¿ì push¸¦ ÀÌ¿ëÇÑ´Ù. @way = (1, 2, 3, 4, 5); @way ¿¡´Â 6À̶ó´Â ¿ø¼Ò°¡ Ãß°¡µÈ´Ù.
9. ¹®ÀÚ¿ ó¸® PerlÀº ¹®ÀÚ¿ 󸮿¡ »ó´çÇÑ ´É·ÂÀ» °ú½ÃÇÏ°í ÀÖ´Ù. ¡° ¡±±âÈ£·Î ¹ÀÎ »óÅ¿¡¼ º¯¼ö¸¦ Á÷Á¢ »ç¿ëÇÒ
¼ö ÀÖ´Ù. ƯÁ¤ ¹®ÀÚ¸¦ ÁöÁ¤ÇÑ ¼ö·®¸¸Å º¹Á¦Çϱâ À§ÇØ
x ¶ó´Â Ư¼öÇÑ ¿¬»êÀÚ¸¦ ÀÌ¿ëÇÑ´Ù. ±¸ºÐ¼± Ãâ·ÂÀ̳ª ¿À»
¸ÂÃß±â À§ÇÑ °ø¹é µî¿¡ ÀÚÁÖ »ç¿ëµÈ´Ù. ¹®ÀÚ¿Áß ÀϺκÐÀ» ÃßÃâÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù. ½ÃÀÛÀ§Ä¡´Â 0ºÎÅÍÀÌ´Ù. substr(º¯¼ö, ½ÃÀÛÀ§Ä¡, ±ÛÀÚ¼ö); $way ¶ó´Â º¯¼öÀÇ °ªÁß Ã¹ ¹ø°ºÎÅÍ 2±ÛÀÚ¸¦
ÃßÃâÇÏ¿© $way3¿¡ ÀúÀåÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù. ¹®ÀÚ¿ Áß¿¡¼ ƯÁ¤¹®ÀÚÀÇ Á¸Àç¿©ºÎ¸¦ ÆľÇÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°´Ù. ½ÇÇà°á°ú ¡°ÀÖÀ½¡±ÀÌ Ãâ·ÂµÈ´Ù. $way = ¡°º½ ¿©¸§ °¡À» °Ü¿ï¡±; ¹®ÀÚ¿À» ġȯ(substitution)ÇÏ·Á¸é ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù. ½ÇÇà°á°ú ¡°ÀÌ°ÍÀÌ »ç¶ûÀϱî?¡±°¡ Ãâ·ÂµÈ´Ù. $way = ¡°ÀÌ°ÍÀÌ ¿ìÁ¤Àϱî?¡±;
10. ½Ã½ºÅÛ ¸í·É `(¿ªµû¿ÈÇ¥)±âÈ£¸¦ ÀÌ¿ëÇÒ °æ¿ì ¿øÇÏ´Â ½Ã½ºÅÛ ¸í·ÉÀ» ½ÇÇàÇÒ ¼ö ÀÖÀ¸¸ç ½ÇÇà°á°ú¸¦ ¾ò¾î¿Í È°¿ëÇÒ ¼ö ÀÖ´Ù. $way = `ls -al`; ÀÌ·¸°Ô ÇÒ °æ¿ì shell¿¡¼¿Í ¸¶Âù°¡Áö·Î ls ¸í·É°á°ú°¡ Ãâ·ÂµÈ´Ù. $bom = `w`; sub login_check { ÇÊÀÚ°¡ »ç¿ëÁßÀÎ ¼¹ö¿¡¼ ¼Ò½º¸¦ ½ÇÇàÇÑ °á°ú ´ÙÀ½°ú °°ÀÌ Ãâ·ÂµÇ¾ú´Ù. way : On-Line ¸¸¾à °á°ú¸¦ ¾ò¾î¿Ã ÇÊ¿ä°¡ ¾ø°í ¸í·É¿¡ µû¶ó ºÎ¼öÀûÀÎ ÀÛ¾÷À» ÇØ¾ß ÇÑ´Ù¸é systemÀ̳ª exec¸¦ »ç¿ëÇÑ´Ù. execÀÇ °æ¿ì ½ÇÇàÁßÀÎ Perl ÇÁ·Î±×·¥Àº Á¾·áµÇ°í ÁöÁ¤µÈ ¸í·É¾î°¡ ½ÇÇàµÈ´Ù´Â Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù. print ¡°top ¸í·ÉÀ» ½ÇÇàÇÒ±î¿ä? [Y/n] ¡°; ÁÙÀԷ¿¬»êÀÚÀÎ <> »çÀÌ¿¡ STDIN(Ç¥ÁØÀÔ·Â)ÀÌ µé¾î°¡°Ô µÇ¸é, Å°º¸µå·ÎºÎÅÍ °ªÀ» ÀԷ¹޴´Ù. ÀÔ·ÂµÈ °ª¿¡ Y ¶Ç´Â y°¡ Á¸ÀçÇÏ´Â °æ¿ì(i ¿É¼ÇÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â´Ù.) top ¸í·ÉÀ» ½ÇÇàÇϵµ·Ï ÇÑ´Ù. À̹ø¿¡´Â ´ë·«ÀûÀÎ ¹®¹ýÀ» À§ÁÖ·Î ¼³¸íÇÏ¿´´Ù. ±âº»ÀûÀÎ ¹®¹ýÀ» Åä´ë·Î Çϳª¾¿ ÀÀ¿ë¹üÀ§¸¦ ´Ã·Á°¡´Ù º¸¸é ¿©·¯ºÐµµ ¾î·ÆÁö ¾Ê°Ô ¾²ÀÓ¼¼ ÀÖ´Â Perl ÇÁ·Î±×·¥À» °³¹ßÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ´ÙÀ½¿¡´Â À¥ÇÁ·Î±×·¥À» À§ÇÑ CGI·Î¼ÀÇ PerlÀ» »ìÆ캸µµ·Ï ÇÏ°Ú´Ù. |