±èÁ¤È¯ÀÔ´Ï´Ù.õ¸®¾È¿¡¼­ ÆÛ¿Â °ÍÀÔ´Ï´Ù.perl °­Á¿¡ µµ¿òÀ» ÁÙ°ÍÀÔ´Ï´Ù. ¾È³çÇϼ¼¿ä À¯´ÏÅÚÀÇ intour ³ª¿ì´©¸®ÀÇ ÇÊlit ÀüÁ¾ÇÊÀÔ´Ï´Ù. ÀúÀÇ PerlÀ̾߱â 1, 2, 3, 4¸¦ Àоî ÁֽŠ¿©·¯ºÐ²² °¨»çµå¸³´Ï´Ù. PerlÀ̾߱â 5ÆíÀ» ½ÃÀÛÇÏ´Ù°¡ °©ÀÚ±â ±× µ¿¾È Àû¾ú´ø À̾߱âµéÀ» µÇ µ¹¾Æ º¸°í ½Í´õ±º¿ä. ±×·¡¼­ ³ëµ¿ÀýÀ» ÀüÈÄÇÏ¿© ÀúÀÇ PerlÀ̾߱â 1, 2, 3, 4¸¦ ¸ðµÎ ÈÈ¾î º¸¾Ò½À´Ï´Ù. ±×·¨´õ´Ï, Á¤¸» ³Ê¹« ºÎ²ô·´´õ±º ¿ä. Á¦ ½Ç·ÂÀ» ½º½º·Îµµ Àß ¾Æ´Â ¹ÙÀÌÁö¸¸, ¿ÀÀÚ, ºÎÁ·ÇÑ ¼³¸í, Àß ¸øµÈ ¿¹Á¦.... ±×·¡¼­ ¸¸»ç Á¦Ãijõ°í ¼öÁ¤, º¸¿ÏÇÑ ÇÕº»À» ¸¸µé¾ú½À´Ï´Ù. ºÎ»ê¿¡ °è½Ã´Â À¯´ÏÅÚÀÇ Ã§¸°Àú´Ô²²´Â Ưº°È÷ ´õ Á˼ÛÇÕ´Ï´Ù. ÀúÀÇ Á¹ÀÛÀ» ÇÁ¸°Æ®±îÁö Çϼ̴µ¥ ÀÌÁ¦¾ß º¸Á¤ÆÇÀ» ¿Ã·ÈÀ¸´Ï ¸»ÀÔ´Ï´Ù. ±× ¿Ü¿¡ ±×·±ºÐÀÌ ¶Ç °è½Ã´Ù¸é, ´Ù½Ã Çѹø, ¾Æ¿ï·¯ »çÁËÇÏ´Â ¹ÙÀÔ´Ï´Ù. º¸Ãæ, Á¤Á¤¿¡ µ¡ºÙ¿©... ¼³¸íÀÌ ³Ê¹« °£·«ÇÑ °ÍµéÀº º¸ÃæÀ» ÇÏ¿´°í ¿ÀÀÚ´Â ¹ß°ßµÈ´ë·Î Á¤Á¤ÇÏ¿´½À´Ï´Ù. ÀÌ·¯ÇÑ °ÍÀº Ä¡¸íÀûÀÎ °ÍÀÌ ¾Æ´Ï±â¿¡ ¿©±â¿¡ ¸ðµÎ Àû´Â°ÍÀº ÇÇÇϰڽÀ´Ï´Ù. ´ÜÁö ¾Æ·¡Ã³·³ Àß ¸øµÈ ¿¹Á¦, ¼³¸í µîÀº Á¦°¡ ÀÚÄ© µÎµé°Ü ¸ÂÀ»¼öµµ Àֱ⿡ ¹Ì¸® ÀÚ ¼öÇÏ´Â ¹ÙÀÔ´Ï´Ù. ±¤¸íÀÌ º¸À̴±º¿ä. (1) "9. PERL¿¡¼­ÀÇ ¿¬»êÀÚ(operator) - ³í¸® ¿¬»êÀÚ"ÀÇ µÞºÎºÐ¿¡ º¸¸é $a <= $b || $max = $a; # C¶ó¸é if( a > b ) max = a; °ÚÁö¿ä. °¡ ÀÖ½À´Ï´Ù. ÀÌ ½ÄÀº À߸øµÇ¾î ÀÖ½À´Ï´Ù.¿Ö³ÄÇÏ¸é ¿¬»êÀÚ =´Â ||º¸´Ù °è»ê»ó ¿ì¼± ¼øÀ§°¡ ´Ê½À´Ï´Ù. ±×·¡¼­ À§ÀÇ ¸í·ÉÀº $a <= $b || $max °¡ ¸ÕÀú °è»êÀÌ µË´Ï´Ù. ±× ´ÙÀ½ÀÇ = $a ºÎºÐÀº ¾²·¹±âÀÌÁö¿ä. ¼öÁ¤µÈ ½ÄÀº $a <= $b || ($max = $a); ÀÔ´Ï´Ù. Àß ¸øµÈ ¿¹Á¦¿¡ »ç°ú ¸»¾¸ µå¸³´Ï´Ù. (2) not, xor, and, orµîÀÇ ³í¸®¿¬»êÀÚ´Â Perl 5.x¿¡¼­ºÎÅÍ »ç¿ëµË´Ï´Ù. (3) ÆÄÀÏ ´Ù·ç±âÁß ÆÄÀÏ¿¡ ¾²±â¿¡ °üÇÑ À̾߱⿡¼­ consoleÀÎ STDIN¿¡ ¾´´Ù°í Àß ¸ø ¼³¸íÇÏ¿´½À´Ï´Ù. STDINÀ» STDOUTÀ¸·Î Á¤Á¤ÇÏ¿´½À´Ï´Ù. (4) ¹®ÀÚ¿­ÀÇ ÀÏÄ¡¿¡ ´ëÇÑ ¼³¸íÁß ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ÇÏÁö ¾Êµµ·ÏÇÏ´Â ¿É¼ÇÀÎ i¿É ¼Ç¿¡ ´ëÇØ À̾߱â Çϸ鼭 "/the/µÚ¿¡ i ÀÚ Çϳª°¡ ¸Å¹Ìó·³ ºÙ¾î ÀÖÁÒ ?"¶ó°í ÇÏ´Â ºÎºÐÀÌ ÀÖ½À´Ï´Ù. ÀÌ Áß the¸¦ World·Î Á¤Á¤ÇÕ´Ï´Ù. PerlÀÇ ¼Ò½º¸¦ ¹ø¿ª, ½ÇÇàÇØÁÖ´Â interpreter´Â ¾Æ·¡ÀÇ Àå¼Ò¿¡ ¿Ã·ÁÁ® ÀÖ½À´Ï ´Ù. ¾ÆÁ÷ ¹ÞÁö ¾ÊÀ¸½ÅºÐµéÀº ¹ÞÀ¸¼Å¼­ ÇÁ·Î±×·¥À» Á÷Á¢ ¸¸µé¾î º¸¼¼¿ä. Àç¹ÌÀÖ ½À´Ï´Ù. À¯´ÏÅÚ: °ø°³ÀÚ·á½Ç-ÀÎÅͳÝÅë½ÅÀÚ·á 310¹ø - µµ½º¿ë 4.x À¯´ÏÅÚ: °ø°³ÀÚ·á½Ç-ÀÎÅͳÝÅë½ÅÀÚ·á 304¹ø - Win95¿ë Beta3 ³ª¿ì´©¸®: °ø°³ÀÚ·á½Ç-ÇÁ·Î±×·¡¹Ö-À¯Æ¿¸®Æ¼ 107¹ø - µµ½º¿ë 4.x ³ª¿ì´©¸®: °ø°³ÀÚ·á½Ç-ÇÁ·Î±×·¡¹Ö-À¯Æ¿¸®Æ¼ 108¹ø - Win95¿ë Beta3 ======================================================== ========================== Perl¾ð¾î À̾߱â. ========================== PERLÀº PRACTICAL EXTRACTION AND REPORT LANGUAGE¶ó´Â INTERPRETER·Î¼­ ¹®¼­ÆÄ ÀÏÀ» Àаí ÇÊ¿äÇÑ Á¤º¸µéÀ» ÃßÃâ(EXTRACTION), ±× Á¤º¸µéÀ» ¹ÙÅÁÀ¸·Î REPORT¸¦ Ãâ·ÂÇÏ´Â ÀÏÀ» Çϴµ¥ ¾ÆÁÖ Àß ¸Â´Â ¾ð¾îÀÔ´Ï´Ù. À¯´Ð½º Ç÷§ÆûÀÇ ±øÅëµé¿¡¼­´Â ½Ã½ºÅÛ °ü¸®¸¦ À§ÇÏ¿© »ç¿ëÇϱ⵵ ÇѴٴµ¥, Àú´Â À¯´Ð½º¶ó°í´Â LINUX¸¦ ÇÑ ¿­ ÈêÁ¤µµ ¾²´Ù°¡ X-WINDOW¸¦ ±î´Âµ¥ °á±¹ ½ÇÆÐÇÑ ÁË·Î À¯´Ð½º´Â °Ü¿ì ³¿»õ¹Û¿¡ ¸Ã Áö ¸øÇÑ »ç¶÷À̶ó ±× ÂÊ¿¡¼­´Â »ç¿ëÀ» ÇØº¸Áö ¸øÇß½À´Ï´Ù. C++¾ð¾î¸¦ Á¶±Ý °øºÎÇÑ ÀÏÀÌ À־ PERLÀ» ¹è¿ì´Âµ¥ µµ¿òÀÌ µÇ¾ú½À´Ï´Ù. »ç½Ç '¹è¿î´Ù'ÇÒ °Í±îÁöµµ ¾øÁö¸¸¿ä.... PERLÀÇ µµ»çµé(¹Ì±¹»ì¶÷, ¿µ±¹»ì¶÷, µîµî)Àº ÀÌ ¾ð¾î°¡ C, sed, awk, shµîÀÇ Æ¯ ¡µéÀ» °áÇÕÇÑ °ÍÀ̾ ±×·¯ÇÑ ¾ð¾î¸¦ ¾Æ´Â »ç¶÷µéÀº ¹è¿ì±â°¡ ½±´Ù°í Çϴµ¥, ±»ÀÌ ±×·± Á¤µµ°¡ ¾Æ´Ï¶óµµ ¹è¿ì´Âµ¥ Å« ÁöÀåÀº ¾øÀ¸¸®¶ó º¾´Ï´Ù. ¿ì¸® ³ª¶ó »ç ¶÷µé ¸Ó¸®°¡ ¾îµð º¸ÅëÀԴϱî ? ±Ù·¡ InternetÀÇ ºÎ»ó°ú ´õºÒ¾î Çý¼ºÃ³·³ ³ªÅ¸³­ WWW, ±×¸®°í Ȩ ÆäÀÌÁö ÀÛ¼º¿¡ ´ëÇÑ ¿­±â, ½ÉÁö¾î´Â ¾î¸°ÀÌ¿¡°Ôµµ ÀÎÅͳÝÀ» ±³À°È¯°æÀ¸·Î Á¦°øÇÏ·Á´Â ÃÖ±ÙÀÇ ³ë·ÂµéÀ» °¨¾ÈÇÒ ¶§, Ȩ ÆäÀÌÁö ÀÛ¼ºÀ» À§ÇÏ¿© HTML¸¸À» »ç¿ëÇÑ´Ù´Â °ÍÀº ºÐ¸í ºÎÁ·ÇÑ °¨ÀÌ ¸¹½À´Ï´Ù. CGI (COMMON GATEWAY INTERFACE)¸¦ ¸»ÇϰíÀÚ ÇÏ´Â °Ì´Ï ´Ù. WWWÀÇ CGI±¸Çö¿¡´Â ¿©·¯ ¹æ¹ýÀÌ ÀÖÀ» ¼ö ÀÖ°ÚÁö¿ä. ±×Áß ÇϳªÀÎ .EXEÆÄÀÏÀ» ¸¸ µé¾î¼­ ÇÏ´Â ¹æ¹ýÀº COMPILER¸¦ »ç¿ëÇÏ¸ç ¶Ç ¸Å¿ì Á¤±³ÇÑ ÀçÁÖ¸¦ »ç¿ëÇØ¾ß Çϱ⠶§¹®¿¡ ±¸Çö°ú DEBUGGING¿¡ ¸Å¿ì ¸¹Àº ½Ã°£ÀÌ ÇÊ¿äÇÏ°í ¶Ç ¼Ò½º¸¦ °íÄ¥ ¶§¸¶´Ù COMPILEÀ» ¹Ýº¹ÇÏ´Â ÀÏ ¶§¹®¿¡ ¾ÆÁÖ Â¥ÁõÀÌ ³ª±âµµ ÇÕ´Ï´Ù. ´Ù¸¥ ¹æ¹ýÀ¸·Î´Â COMPILEÀÌ ¾Æ´Ñ INTERPRETINGÀ» ÇÏ´Â ¾ð¾î¸¦ »ç¿ëÇÏ´Â °ÍÀε¥ COMPILER·Î ¸¸µç .EXE ÆÄÀϺ¸´Ù ´À¸®±â´Â ÇÏÁö¸¸ ±×´ÙÁö Å« ÇÁ·Î±×·¥ÀÌ ¾Æ´Ï°í ¼­´Â Å« Â÷À̸¦ ´À³¥ ¼ö ¾ø´Â µ¥´Ù DEBUGGINGÈÄ ½ÇÇà±îÁöÀÇ ½Ã°£ÀÌ °¡È÷ '´« ±ô ¦ÇÒ »õ'¶ó¼­ Á¤¸» ½Ç¿ëÀûÀ̶ó ÇÒ ¼ö ÀÖ°Ú½À´Ï´Ù. PERLÀº ´õ±¸³ª HTML°ú °°Àº ¹®¼­¸¦ ´Ù·ç´Âµ¥ ¾ÆÁÖ °­·ÂÇÑ ±â´ÉÀ» °¡Áö°í ÀÖÀ¸¹Ç ·Î CGI±¸ÇöÀ» À§ÇÑ ÃÖÀûÀÇ ¾ð¾î¶ó ÇÒ ¼ö ÀÖÀ¸¸ç, UNIX, MVS, VMS, MS-DOS, Macintosh, OS/2, Amiga, Windows NT µî ¿©·¯ °¡Áö Operating system¿¡ Porting µÇ¾î ÀÖÀ¸¹Ç·Î ¼Ò½ºÆÄÀÏÀÇ À̽ļºÀÌ ¶Ù¾î³ª Ȩ ÆäÀÌÁö ±¸¼º ½Ã¿¡ Â÷ÈÄ ¼­¹ö ÇÁ ·Î±×·¥À̳ª Operating systemÀÇ º¯È­¿¡µµ ºÎ´ãÀ» ÁÖÁö ¾Ê¾Æ ÁÁ°í, ¶Ç PERLÇÁ·Î ±×·¥ ÀÚü°¡ ÇÁ¸®¿þ¾îÀÎ °ü°è·Î Internet»ó¿¡¼­ ¾ó¸¶µçÁö ±¸ÇÒ ¼ö ÀÖÀ¸´Ï ±×¾ß ¸»·Î ²æ ¸Ô°í ¾Ë ¸Ô°í µÕÁö ÅÐ¾î ºÒ½î½Ã°³±îÁö ÇÏ´Â ½ÄÀÌÁö¿ä. (¹°·Ð ÁøÂ¥ ±×·¸ °Ô´Â ÇÏÁö ¾Ê½À´Ï´Ù. ȯ°æÀ» »ì·Á¾ßÁÒ...) ÀÚ¹Ù°¡ ¾î¼°í,,, ÀÌ·± ¼¼»ó¿¡ À¢ ±¸¼®±âÇüÀÇ ¾ð¾î³Ä°í Ÿ¹ÚÇÏ½Ç ºÐµµ °è½Ç ÁÙ ¾Ð´Ï´Ù. ±×·¯³ª »ý°¢ÇØ º¸½Ê½Ã¿À. ÀÚ¹Ù°¡ ¼ÒÀ§ '°æÇâ'ÀÎ °ÍÀº Ʋ¸²¾øÁö¸¸ ÇöÀç ÁÖ·ù¶ó°í ÇÒ ¼ö ÀÖÀ»±î¿ä ? ÀÚ¹Ù´Â 32 ºñÆ® ±â¹ÝÀÇ o/s¿¡¼­ ºê¶ó¿ì¡ÀÌ °¡´ÉÇÑ °ÍÀ¸·Î ¾Ë°í ÀÖ½À´Ï´Ù. ¿ì¸® ³ª¶ó¿¡¼­ °³ÀÎÀ» Á¦¿ÜÇÑ ±â¾÷, ƯÈ÷ Áß¼Ò±â¾÷µéÀÇ ´ëºÎºÐÀÇ ¾÷¹«È¯°æÀÌ 32 ºñÆ® ¿ÀÆÛ·¹ÀÌÆÃ ½Ã½ºÅÛÀϱî¿ä ? ÷´Ü ±â¼úÀ» ½ÀµæÇÏ°í º¸Á¶¸¦ ¸ÂÃß¾î °¡¾ß ÇÏ´Â °ÍÀº ÄÄÇ»ÅÍ ÇÏ´Â »ç¶÷ÀÇ ÀÚ¼¼ÀÓÀÌ Æ²¸²¾øÁö¸¸ ¿©·¯ºÐ ÀÇ È¨ ÆäÀÌÁö¿¡ Á¢¼ÓÇÒ ¼ö¸¹Àº ÀáÀç °í°´µéÀÇ »çÁ¤À» °¡´ÆÇØ º¸´Â °ÍÀº ¶ÇÇÑ ºñ Áö´Ï½º ¸ÇÀÇ Àǹ«ÀÔ´Ï´Ù. ¾ÆÁ÷µµ, ±×¸®°í ÇâÈÄ ¾ó¸¶µ¿¾ÈÀº, 16 ºñÆ® ȯ°æ¿¡¼­ ÀÏÇÏ´Â ¿©·¯ºÐÀÇ °í°´µéÀ» »ý°¢ÇϽðí perlÀ» ±×³É Áö³ªÄ¡Áö ¸¶½Ê½Ã¿À. C, C++°°Àº ¾ð¾î¸¦ ½áº¸½Å ºÐµéÀº ±× ¾ð¾î¿¡¼­ ¹®ÀÚ¿­°ú ¸Þ¸ð¸®ÀÇ °ü¸®°¡ ¾ó¸¶ ³ª Â¥Áõ³ª´Â ÀÏÀÎÁö ¾Æ½Ç °Ì´Ï´Ù. PERLÀº ±×·± °Ô ¾ø¾î¿ä. ¿©·¯ ¹ø¿¡ °ÉÄ£ debuggingÀ¸·Î ¿Ïº®ÇØÁø Perl ÇÁ·Î±×·¥À» ½ÇÇàÆÄÀÏ·Î ÀüȯÇÏ°í ½ÍÀ» ¶§°¡ ¿À¸é ¾î¶±ÇÏ´À³Ä°í¿ä ? Internet»ó¿¡¼­ ãÀ¸¸é Perl compilerµµ ÀÖ½À ´Ï´Ù. ¶§°¡ µÇ¸é ã¾Æº¸¼¼¿ä. ÀåÁ¡À» µé·Á¸é ÇÑÀÌ ¾øÀ¸´Ï ÀÌ Á¤µµ¿¡¼­ ±×Ãľ߰ڽÀ´Ï´Ù. ÀÐ¾î °¡½Ã¸é¼­ Àǹ® ³ª´Â Á¡À̳ª À߸øµÈ Á¡ ÁöÀûÇØÁÖ½Ã¸é °¨»çÇϰڽÀ´Ï´Ù. ¾ÕÀ¸·ÎÀÇ À̾߱â´Â ÀüÈİ¡ Áߺ¹µÇ´Â °ÍÀÌ¶óµµ ÇÊ¿äÇÏ¸é ´Ù½Ã Àûµµ·Ï ÇϰڽÀ´Ï ´Ù. ±×·¡¼­ °¡´ÉÇÑ Àо°¡¸é¼­ ÀüÀÇ ³»¿ëÀ» µÚÀûÀÌÁö ¾Êµµ·Ï ÇÏ·ÁÇÕ´Ï´Ù. ¹° ·Ð º¸ÀåÀº ¾øÁö¸¸.... µ¡ºÙÀÏ ¸»½ÓÀº ÀúÀÇ Perl À̾߱â´Â ¾ð¾îÀÇ ±âÃʸ¦ ´ÙÁö´Â Á¤µµ¿¡¼­ ±×Ä¥ °ÍÀÌ°í ±× ÀÌ»óÀÇ À̾߱â´Â ÀúÀÇ ½Ç·ÂÀÌ ´Ã°í ¶Ç ±âȸ°¡ »ý±â¸é ´Ù½Ã ½ÃÀÛµÉ ¼ö ÀÖ°Ú´Ù ´Â °Ì´Ï´Ù. ÇÏ¿À´Ï ±âÃʸ¦ ³Ñ¾î¼± À̾߱â´Â ½º½º·Î °øºÎÇÏ½Ã°í ´çºÐ°£Àº ¹¯Áö ¸»¾Æ´Þ¶ó´Â ºÎŹÀÔ´Ï´Ù. °¨»çÇÕ´Ï´Ù. *** µµ½º¿ë PERLÀ» PKUNZIP ÇϽǶ§´Â ROOT DIRECTORY¿¡¼­ -d ¿É¼ÇÀ» ÁÖ°í ÇϽŠÈÄ »ý¼ºµÇ´Â DIRECTORYÀ̸§À» NCD¿Í °°Àº °ÍÀ» ÀÌ¿ëÇÏ¿© PERLÀ̶ó°í Àç¸í¸í ÇØ ÁÖ¼¼¿ä. Àü Á¾ ÇÊ (³ª¿ì: ÇÊlit À¯´Ï: intour, intour@unitel.co.kr) 1. ù ¹øÂ° ÇÁ·Î±×·¥ - Hello World. ================================= ¾ðÁ¦³ª ±×·¸µíÀÌ Ã¹ ÇÁ·Î±×·¥Àº ¹Ù·Î À̴̰ϴÙ. # hello.pl print "Hello World\n"; ÀÌ °ÍÀÌ ÇÁ·Î±×·¥ÀÇ ÀüºÎ. print´Â ´ÙÀ½ÀÇ ¹®ÀÚ¿­, ¼ýÀÚ, º¯¼ö µîÀ» STDOUT¿¡ Ãâ·ÂÇÕ´Ï´Ù. Âü ½±±º¿ä. \n : C++ÀÇ \n°ú °°Àº ¿ªÇҷνá Ä¿¼­¸¦ ´ÙÀ½ÁÙ ¾ÕÀ¸·Î º¸³»´Â °Ì´Ï´Ù. (new line) # : ÀÌ ¹®ÀÚ ÀÌÈĺÎÅÍ ³¡±îÁö´Â perl·ÎºÎÅÍ ¹«½ÃµË´Ï´Ù. ÁÖ¼®¹®ÀÌÁÒ. ÁÖ¼®¹®À» Àß ½á ³õÀ¸¸é ³ªÁß¿¡ ÇÁ·Î±×·¥À» ÀÐÀ» ¶§ ½±°Ô ÀÌÇØ°¡ µÇ°ÚÁÒ. ; : ÇÑ ¸í·É¹®Àº ¾ðÁ¦³ª ;(colon)À¸·Î ³¡³³´Ï´Ù. À̰ÍÀÌ ºüÁö¸é ´ÙÀ½ ¸í·É ¶óÀο¡ error°¡ ¹ß»ýÇÕ´Ï´Ù. hello.plÀº ÁüÀÛÇϽôٽÃÇÇ Æò¹üÇÑ ascii ÆÄÀÏ(textÆÄÀÏ)ÀÔ´Ï´Ù. µû¶ó¼­ dosÀÇ edit¿Í °°Àº ÇÁ·Î±×·¥À¸·Î ÆíÁýÇÏ¸é µÇ°ÚÁÒ. 2. ±×·¡¼­, ±× ÆÄÀÏÀ» ¾î¼¶õ ¸»ÀÌ³Ä ?? - perl ÇÁ·Î±×·¥ÀÇ ½ÇÇà. ============================================================= dos prompt»ó¿¡¼­, perl hello.pl ÇÏ¸é µË´Ï´Ù. ¹°·Ð perl.exe°¡ PATHȯ°æÀ̳ª ÇöÀç directory¿¡ ÀÖ´Ù´Â °¡Á¤ ÇÏ ¿¡¼­ÁÒ. ±×·¯¸é È­¸é»ó¿¡, C:\PERL>perl hello.pl Hello World C:\PERL> À̶ó°í µÇ°ÚÁö....¿ì ! ******( Windows NT¿¡¼­ÀÇ ½ÇÇà )****** Windows NT¿¡¼­´Â install.cmd¸¦ ½ÇÇà½ÃŰ°í ³­ ÈÄ¿¡ perl hello.plÀ̶ó°í ÇÏ¸é ¹®Á¦¾øÀÌ ½ÇÇàÀÌ µË´Ï´Ù. µµ½ºÃ¢À» ¿­°í ½ÇÇàÇØ º¸¼¼¿ä. ************************************* 3. ¾Ç ! ±Ùµ¥ ÀÌ°Ç ¸Ó½Ã³Ä ??? - ù ERROR MESSAGE ??. ============================================= DOS/4GW Professional Protected Mode Run-time Version 1.97 Copyright (c) Rational Systems, Inc. 1990-1994 DOS¿ë PERLÀº 1 MbytesÀÇ ÇѰ踦 ±Øº¹ÇÏ°í ¿øÈ°ÇÑ ½ÇÇàÀ» µ½±â À§ÇÑ Rational Systems, IncÀÇ DOS EXTENDER¸¦ »ç¿ëÇÕ´Ï´Ù. À§ÀÇ Ãâ·Â³»¿ëÀº ´Ü¼øÈ÷ ±× productÀÇ ¼±Àü³»¿ëÀÏ »ÓÀÌ´Ï ¹®Á¦ µÉ °ÍÀº ¾øÁö¸¸ ±×´ÙÁö ¸ÅÀÏ º¸°í ½ÍÀº °ÍÀº ¾Æ´Ï°ÚÁÒ. ÂüÀ» ¼ö ¾ø´Â »ç¶÷µéÀº: SET DOS4G=QUIET Çϸé Á¶¿ëÇØÁý´Ï´Ù. ¶Ç, ¾î¶² °æ¿ì¿¡´Â DOS/4GW Professional fatal error (1307): not enough memory ¶ó´Â Message°¡ ³ª¿À°í ½ÇÇàÀÌ ÀüÇô µÇÁö ¾ÊÀ» ¼öµµ Àִµ¥, ÀÌ °ÍÀº ¾Æ¸¶ EMS ±×¸®°í/¶Ç´Â Smartdrv°¡ Â÷ÁöÇϰí ÀÖ´Â MemoryºÎºÐÀ» DOS EXTENDER°¡ ²¬¶±´ë´Ù °¡ ÇÑ´ë µÎµé°Ü ¸Â°í¼­ ³»´Â ½ÅÀ½¼Ò¸®ÀÏ °Ì´Ï´Ù. ÀúÀÇ °æ¿ì ÃÑ 16¸Þ°¡ÀÇ ¸Þ¸ð¸®¸¦ ¾²°í, EXPANDED MEMORY 1 MByte, SMARTDRV 1MByte¸¦ »ç¿ëÇϱ⠶§¹®¿¡ 1 MByteÀÇ ¿©À¯¸¦ °®°í¼­ 4MÀÇ ÁÖ¼ÒºÎÅÍ 16MÀÇ ÁÖ¼Ò ±îÁö¸¦ EXTENDER°¡ »ç¿ëÇϵµ·Ï ¾Æ·¡Ã³·³ ÁöÁ¤ÇÏ¿´½À´Ï´Ù. SET DOS16M=@4M-16M ÀÚ¼¼ÇÑ ³»¿ëÀº README.DOS¸¦ º¸½Ã¸é µË´Ï´Ù. (»ç½Ç Àú´Â Á¦°¡ ÇÊ¿äÇÑ °Í Àܴ̿ ÀÚ¼¼È÷ ÀÐÁö ¾Ê¾Ò°Åµç¿ä...) Âü°í·Î Windows NT¿¡¼­´Â INSTALL.CMD¸¦ ½ÇÇà½ÃÄÑ Áִ°ÍÀ¸·Î ¹®Á¦°¡ ¾ø´õ±º¿ä. 4. º¯¼ö(VARIABLE) ================= PERLÀÇ º¯¼ö´Â Å©°Ô 3 °¡Áö·Î ³ª´©¾îÁý´Ï´Ù. 1. scalar variable. 2. array. 3. associative array. (hash) scalar º¯¼ö´Â º¯¼ö¸í ¾Õ¿¡ $¸¦ ºÙÀÌ´Â º¯¼ö·Î ±»ÀÌ ¸»ÇÏÀÚ¸é ÀÏ¹Ý º¯¼ö¶ó ÇÏ´Â °Ô ÁÁÀ» °Í °°½À´Ï´Ù. scalar¶ó´Â °ÍÀº '½Ç¼ö(ãùâ¦)·Î Ç¥½ÃÇÒ ¼ö ÀÖ´Â ¼ö·®', ¹æÇ⼺ÀÌ ¾ø´Â ¼ö·® °°Àº °ÍÀε¥ ´Ù¸¥ ¾ð¾î¿¡¼­Ã³·³ Á¤¼öÇü, ¿ÕÁ¤¼öÇü, ½Ç¼öÇü, ¿Õ½Ç¼öÇü (Çó´Ô¿ä....) µî°ú °°Àº ¾ö°ÝÇÑ ±¸ºÐ ¾øÀÌ ¸ðµç ¼ýÀÚ°¡ ½Ç¼öÇüÀ¸·Î Àú ÀåÀÌ µÇ´Â µí(?)Çϸç(ü°èÀûÀ¸·Î ¹è¿î °Ô ¾Æ´Ï´Ï ¿ë¼­¹Ù¶÷.), ½ÉÁö¾î´Â ¹®ÀÚ¿­ µµ ÀúÀåÀÌ µÇ´Â, Á¶±ÝÀº Çò°¥¸±Áö ¸ô¶óµµ, ¸Å¿ì Æí¸®ÇÑ º¯¼öÇüÅ ÀÔ´Ï´Ù. µû¶ó ¼­ $price = 100000; print "$price\n"; # <- '\n'ÀÌ new lineÀ̶ó°í ¸»Çß½´. $price = "Very expensive."; print "$price\n"; ¿¡¼­¿Í °°ÀÌ ¼ýÀÚ¸¦ ÇÒ´çÇß´ø º¯¼ö¿¡ ¹®ÀÚ¿­À» Àç ÇÒ´çÇØµµ ÀüÇô ¹®Á¦°¡ ¾ÈµË´Ï ´Ù. ½Å³ª´Â±º¿ä. ¾à°£ ÀÌ»óÇÑ °Ô ´«¿¡ ¶ßÀԴϱî ? ÀÏ´Ü ³Ñ¾î°¡¼¼¿ä. ¶Ç PerlÀÇ º¯¼ö¿¡´Â ¹®ÀÚ¿­·Î ÀúÀåµÈ ¼ýÀÚÇüÅÂÀÇ º¯¼ö, Áï 1000ÀÌ ¾Æ´Ñ "1000" µµ °è»ê½Ä¿¡ ±×´ë·Î Àû¿ë½Ãų ¼ö ÀÖ´Ù´ÂÁ¡ÀÌ ¾ÆÁÖ Àç¹ÌÀÖ½À´Ï´Ù. $price = "130"; # ¸ð¾çÀº ¼ýÀÚÀÌÁö¸¸ ½ÇÁ¦´Â ¹®ÀÚ¿­ÀÔ´Ï´Ù. $double = $price * 2; print "$double\n"; À§ÀÇ ¼Ò½º¸¦ ½ÇÇà½ÃÄÑ º¸¼¼¿ä. ÀÌ°Ô ¿¡·¯°¡ ¾ø´Ù´Ï±î¿ä, ±Û½ê ! ÀÌ·± º¯¼öÀÇ Æ¯¼ºÀº ¿©·¯ºÐÀÇ ÇÁ·Î±×·¥ÀÌ »ç¿ëÀڷκÎÅÍ ¹ÞÀº ÀڷḦ °è»ê½Ä¿¡ ÀÌ¿ëÇÒ ¶§ ´Ù¸¥ ¾ð¾î¿¡¼­Ã³·³ ¼ýÀÚ·Î º¯È¯ÇÏ´Â ÇÔ¼ö µîÀ» »ç¿ëÇÏÁö ¾Ê°í Áï½Ã °è»ê¿¡ »ç¿ëÇÒ ¼ö ÀÖ°ÔÇϰÚÁö¿ä. array´Â ¹è¿­ÀÔ´Ï´Ù. ÀÏÁ¾ÀÇ ÁýÇÕü, ±¸Á¶Ã¼ °°Àº °ÍÀÔ´Ï´Ù. ¹è¿­À̶õ º¹¼öÀÇ ÀϹݺ¯¼öµéÀ» º¯¼ö °¢°¢ÀÇ À̸§ÀÌ ¾Æ´Ñ ÂüÁ¶¹øÈ£¸¦ ÀÌ¿ëÇÏ¿© Á¢±ÙÇÒ ¼ö ÀÖµµ·Ï ±¼ºñ ¿«µí ÁÙÁÙÀÌ ¿«¾î³õÀº °ÍÀÔ´Ï´Ù. Áï "ÀüÁ¾ÇÊ"À̶ó°í ºÎ ¸£Áö ¾Ê°í "58¹ø"ÇÏ°í ºÎ¸£´Â°ÍÀ̰ÚÁö¿ä. ¹è¿­ÀÇ ¸Ó¸®¿¡´Â $°¡¾Æ´Ñ ´ÞÆØÀÌ(@)¸¦ ºÙÀÔ´Ï´Ù. Áï, @myarray; ¿Í °°½À´Ï´Ù. ¶Ç ¹è¿­ÀÇ ±¸¼º¿ä¼Ò´Â ÀϹݺ¯¼ö(scalar)À̹ǷΠ°³°³ ±¸¼º¿ä¼Ò¸¦ ³ªÅ¸³¾ ¶§´Â $myarray[0] = 0; # 0¹ø ±¼ºñ¿¡°Ô´Â ÆÄ¸® 0¸¶¸®, $myarray[1] = 5; # 1¹ø ±¼ºñ´Â 1¸¶¸®ÀÇ ÆÄ¸®¸¦ µå¸®°Ú¾î¿ä¿À¿À. $myarray[2] = "I do not want a number but a long long long string."; $myarray[3] = 300; # ¹è Æ®ÀÚ»Ñ°Ú³× ! print $myarray[2], "\n"; print "$myarray[2]\n"; °ú °°ÀÌ ³ªÅ¸³À´Ï´Ù. ±¼ºñ°¡ ¸î ¸¶¸®ÀÎÁö´Â ¼¼¾îº¸¸é ¾Ë°ÚÁö¸¸ ¹è¿­ÀÇ Å©±â¸¦ ¾Ë¾Æ¾ß ÇÒ ¶§´Â ´«À¸·Î ¼¿ ¼ö ¾øÁö¿ä. ±× ¶§´Â $lastIndex = $#myarray; ó·³ Çϸé @myarrayÀÇ ¸Ç ¸¶Áö¸· ¿ä¼ÒÀÇ ÂüÁ¶¹øÈ£(index number)¸¦ ¾Ë ¼ö ÀÖ½À ´Ï´Ù. Áï $lastIndex ¶Ç´Â $#myarrayÀÇ °ªÀÌ 3 À̶ó¸é ¹è¿­ÀÇ Ã¹ ÂüÁ¶¹øÈ£´Â 0 À̹ǷΠ¿ä¼ÒÀÇ °¹¼ö´Â ¸ðµÎ 4°³ÀÎ ¼ÀÀÔ´Ï´Ù. ¹è¿­ÀÇ Å©±â¸¦ Á¶ÀýÇÒ ¶§¿¡µµ ¸¶Áö¸· ÂüÁ¶¹øÈ£¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. $#myarray = 2; # ¸¶Áö¸· ÂüÁ¶¹øÈ£¸¦ 2·Î ¸ÂÃß¶ó ! Âî¾Æ¾È... ¶ó°í Çϸé $myarray[3]Àº »ç¶óÁö°í 3°³ÀÇ ¿ä¼Ò¸¸ ³²°ÜÁý´Ï´Ù. Á¶±ÝÀº ÈñÇÑÇÑ ¹æ ¹ýÀÌÁö¸¸ Æí¸®Çϱ⵵ ÇÏÁö¿ä. ¹°·Ð ´ÃÀÏ ¼öµµ ÀÖ°ÚÁö¿ä. Associative array´Â hash¶ó°íµµ ÇÏ´Â À⵿»ç´Ï ÁÖ¸Ó´ÏÀÔ´Ï´Ù. ¹è¿­°ú ºñ½ÁÇÏÁö ¸¸ ¹è¿­Ã³·³ ÂüÁ¶ ¹øÈ£°¡ ¾Æ´Ñ ÂüÁ¶ '¿­¼è'(key)·Î °ªÀ» Á¤Çϰųª ãÀ» ¼ö ÀÖ½À ´Ï´Ù. Áï, @myarray = ( 1, 3, 5, 2, 6 ); $fourth = $myarray[3]; # 2 %myhash = ( "apple", 3, "pear", 10, "banana", 4, "monkey", 2 ); $howmany = $myhash{ "banana" } # returns 4 $howmany = $myhash{ "apple" } # returns 3 $myhash{ "pear" } = 9; # becomes ( ..., 3, "pear", 9, "bana... ) ¿©±â±îÁö ´ë·« º¯¼ö¿¡ ´ëÇÏ¿© ¾Ë¾Æº¸¾Ò½À´Ï´Ù. ´©¿ö¼­ ¶± ¸Ô±âÁÒ ? ÀÌÁ¦´Â Çϳª¾¿ ¹®Á¦¸¦ ¸¸µé¾î°¡ º¾½Ã´Ù¿ä. 5. È­¸é¿¡ ¾²±â - print ÇÔ¼ö =========================== ¿ì¸®ÀÇ Ã¹ ¹øÂ° ÇÁ·Î±×·¥ÀÎ hello.plÀ» ¶°¿Ã·Á º¾½Ã´Ù. print "Hello World\n";°¡ ÀüºÎ¿´ÁÒ. Á»´õ ±ä Àλ縦 ÇØº¼±î¿ä ? # heylong.pl print <È«±æµ¿°ú 108 Àå¼öµé

È«±æµ¿°ú 108 Àå¼öµé


³ª´Â È«±æµ¿ÀÌ´Ù.

ÇÑ ´ë ¸Â¾Æ º¼Å×³Ä ?
¾ÆÇÁÁö ? ¿ìÇÏÇÏÇÏÇÏ !!

À§ÀÇ HTMLÀ» º¸°í¼­ ÇÑ ´ë ¸Â°í ½ÍÀº »ç¿ëÀÚ´Â "ÇÑ ´ë ¸Â¾Æ º¼Å×³Ä ?"¿¡ ¸¶¿ì½º ¸¦ ´ë°í ¶ÈµüÀÔ´Ï´Ù. ±×·¯¸é ¼­¹ö´Â "strike.pl"ÆÄÀÏÀ» ã¾Æ¼­ perl strike.pl À» ½ÇÇà½Ãŵ´Ï´Ù. ¹°·Ð perl.exe´Â path·Î ÁöÁ¤µÇ¾î ÀÖ´Â °æ·Î¿¡ ÀÖ¾î¾ß ÇÕ´Ï ´Ù. strike.plÀº ÀÌ·¸°Ô »ý°åÀ» °Ì´Ï´Ù. # strike.pl print "Content-type: text/html\n\n"; # À§ÀÇ ¸í·ÉÇàÀº ¹Ýµå½Ã µé¾î°¡¾ßÇÏ´Â ³»¿ëÀÔ´Ï´Ù. # ±×·¡¾ß browser°¡ html ÆÄÀÏÀÓÀ» ¾Ë¾Æ º¼ Å״ϱî¿ä. print <»ç½ÇÀº ¹é ¾ÆÈ©´ëÀÓ.

¹é ¾ÆÈ©´ë¸¦ ¸Â¾Æ¶ù !


¿Ö³ÄÇϸé È«±æµ¿ º¸ÅÂ±â ¹é ¿©´ü Àå»ç¸é ¹é ¾ÆÈ©¸í À̴ϱî.

ÀÚ, ¸Â¾Æ¶ù !

endOfHtml for( $i = 0; $i < 109; $i++ ) # ³»¿ëÀ» 109¹ø ¹Ýº¹. ³ªÁß¿¡ ¶Ç ¼³¸í. { print "µû¾Ç "; } # 109¹øÀ» µû¾Ç µû¾Ç µû¾Ç µû¾Ç µû¾Ç µû¾Ç µû¾Ç !!! print "

" print "¾ÆÇÁÁö ?"; À¥¼­¹ö ÇÁ·Î±×·¥Àº printµÇ´Â ³»¿ëÀ» browser·Î º¸³À´Ï´Ù. °á°ú´Â »ó»óÇØ º¸¼¼ ¿ä. ÀÏ´ÜÀº ÀÌ Á¤µµ¸¸ ¾Ë¾Æ µÎ¼Åµµ µÉ µí ÇÕ´Ï´Ù. ¾ÕÀ¸·Î´Â ²À ÇÊ¿äÇÑ °æ¿ì¸¦ Á¦¿Ü Çϰí´Â ±»ÀÌ cgi´Â ¾ð±ÞÇÏÁö ¾Ê°Ú½À´Ï´Ù. ******( Âü°í )****** PERLÀº ¼Ò½ºÆÄÀÏÀ» ÀÐ¾î µéÀÎ ÈÄ ÀÏ´Ü Ã³À½ºÎÅÍ ³¡±îÁö ±â°è¾î·Î ¹ø¿ªÀ» ÇÕ´Ï ´Ù. ±×¸®°í´Â ¸Å¿ì ºü¸¥ ¼Óµµ·Î ½ÇÇàÀ» ½Ãŵ´Ï´Ù. perl.exe·Î ½ÇÇàÀ» ½ÃÄѺ¼ ¶§ ½ÇÇà Á÷Àü±îÁö ¾à°£ÀÇ ¸ØÃ㠽ð£À» ´À³¥ ¼ö ÀÖ´Â °ÍÀº ¹Ù·Î ¿ÏÀüÇÑ ¹ø¿ªÀ» À§ÇØ ¾à°£ÀÇ ½Ã°£ÀÌ ¼Ò¿äµÇ±â ¶§¹®ÀÔ´Ï´Ù. ÇÁ·Î±×·¥¿¡ ¹ö±×°¡ ÀÖÀ» ¶§´Â ±× ¾ÕÀÇ ¸í·ÉÇà ¾î´À Çϳªµµ ½ÇÇàµÇÁö ¾Ê°í Áï½Ã ¿À·ù ¸Þ¼¼Áö°¡ ³ª¿À´Â °Íµµ ½ÇÇà Àü¿¡ ¿ÏÀüÈ÷ ¹ø¿ªÀ» ÇØ ³õ±â ¶§¹®ÀÔ´Ï´Ù. ******************** 7. PERLÀÇ ¿¬»êÀÚ(operator) - ¼ýÀÚ °è»ê ====================================== $b = 3; # = ´Â °°´Ù´Â ¶æÀÌ ¾Æ´Ñ ÇÒ´ç, ÀúÀåÀÇ ÀǹÌÀÔ´Ï´Ù. # Áï, $b¿¡ 3À̶ó´Â °ªÀ» ÀúÀå. $b = $a; # ... $b = @a; # ÀϹݺ¯¼ö $b¿¡ ¹è¿­ @a¸¦ ÀúÀå. ¹è¿­ $aÀÇ ¸ðµç¿ä¼Ò # µéÀÌ ±×´ë·Î °£°Ý¾øÀÌ ¼ø¼­´ë·Î ¿¬°áµÇ¾î ÀúÀå. $b = "@a"; # ÀϹݺ¯¼ö $b¿¡ ¹è¿­ @a¸¦ ÀúÀå. ¹è¿­ $aÀÇ ¸ðµç¿ä¼Ò # µéÀÌ ÇϳªÀÇ °ø¹éÀ» »çÀÌ¿¡ µÎ°í ¼ø¼­´ë·Î ¿¬°áµÇ¾î # ÀúÀå. @b = @a; # ¹è¿­ @b¿¡ ¹è¿­ @a¸¦ ÀúÀå. ¹è¿­ $aÀÇ ¸ðµç¿ä¼Ò # µéÀÌ ±×´ë·Î @b¿¡ ÀúÀåµÊ. %b = %a; # hash %b¿¡ hash %a¸¦ ÀúÀå. $b = $a = 3; # $a, $b¿¡ 3À» ÀúÀå. ### À§ÀÇ ½ÄµéÀ» Á÷Á¢ ½ÇÇèÇØ º¸¼¼¿ä. ¾î¶² °á°ú°¡ ³ª¿À´ÂÁö Á÷Á¢ ### Ã¼Å©ÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù. $a = 10 + 3; # 10°ú 3À» ´õÇÏ¿© $a¿¡ ÀúÀå. $a = 3 - 10; # 3¿¡¼­ 10À» »« ÈÄ $a¿¡ ÀúÀå. $a = 3 * 10; # °öÇϱâ. $a = 3 / 10; # 3 ³ª´©±â 10. $a = 2 ** 3; # 2ÀÇ 3½Â (8). ÁÖÀÇ: -2**3Àº -(2**3)°ú °°À½. $a = 10 % 3; # 10À» 3À¸·Î ³ª´« ÈÄÀÇ ³ª¸ÓÁö °ª. ($a´Â 1). $b = ++$a; # $a °ªÀ» 1 ¸¸Å­ Áõ°¡ ½ÃŲ ÈÄ¿¡ ±× °ªÀ» $b¿¡ ÀúÀå. $b = --$a; # $a °ªÀ» 1 ¸¸Å­ °¨¼Ò ½ÃŲ ÈÄ¿¡ ±× °ªÀ» $b¿¡ ÀúÀå. $b = $a++; # $a °ªÀ» $b¿¡ ÀúÀåÇÑ ÈÄ¿¡ $a°ªÀ» 1 ¸¸Å­ Áõ°¡. $b = $a++; # $a °ªÀ» $b¿¡ ÀúÀåÇÑ ÈÄ¿¡ $a°ªÀ» 1 ¸¸Å­ °¨¼Ò. $b += 13; # $bÀÇ °ª¿¡ 13À» ´õÇÑ °ªÀ» $b¿¡ ÀúÀå. $b -= 13; # $bÀÇ °ª¿¡¼­ 13À» »« °ªÀ» $b¿¡ ÀúÀå. $b *= 13; # ÀÌÇÏ ¼³¸í »ý·«. $b /= 13; # $b %= 13; # $b **= 13; # 8. PERL¿¡¼­ÀÇ ¿¬»êÀÚ(operator) - ¹®ÀÚ¿­ °è»ê ============================================ $a = "hello" . "world"; # $a´Â "helloworld"°¡ µÊ. »çÀÌ¿¡ Àִ°ÍÀº # Á¡ÀÔ´Ï´Ù. Àϸí, ÂÀ ! $a = "hello" x 3; # "hellohellohello". $a = "hello"; $a .= " world"; # "hello world" Áõ°¡ ¿¬»êÀÚÀÇ ¸¶¼ú ! print ++($foo = '99'); # prints '100' print ++($foo = 'a0'); # prints 'a1' print ++($foo = 'Az'); # prints 'Ba' print ++($foo = 'zz'); # prints 'aaa' °¨¼Ò ¿¬»êÀÚ(--)´Â Áõ°¡ ¿¬»êÀÚ°¡ ÇÇ¿ì´Â ÀçÁÖ¸¦ ¸ð¸¨´Ï´Ù. 9. PERL¿¡¼­ÀÇ ¿¬»êÀÚ(operator) - ³í¸® ¿¬»êÀÚ ============================================ ³í¸® ¿¬»êÀÚ´Â ¾î¶² Á¶°ÇÀÌ ÂüÀÎÁö °ÅÁþÀÎÁö ÆÇº°ÇÒ ¶§ »ç¿ëÇÕ´Ï´Ù. ³í¸®Àû AND ( && )´Â µÎ Á¶°ÇÀÌ ¸ðµÎ ÂüÀÏ ¶§ Àüü¸¦ ÂüÀ¸·Î °áÁ¤Çϰí, ³í¸®ÀûÀÎ OR ( || ) ´Â µÎ Á¶°ÇÀÌ ¸ðµÎ °ÅÁþÀÏ ¶§ Àüü¸¦ °ÅÁþÀ¸·Î °áÁ¤ÇÕ´Ï´Ù. ÇÙ±³ ´ó±æ¶§ ´Ùµé ¹è¿ì¼ÌÁö¿ä ? Perl ¾ð¾î¿¡¼­µµ 0Àº °ÅÁþÀ¸·Î º¸°í ±×¿Ü´Â ÂüÀ¸·Î º¾´Ï´Ù. ±×·¡ ¼­ $a = 1; $b = 2; $c = 0; $d = $a && $b; # $d´Â 1; Âü $d = $a && $c; # $d´Â 0; °ÅÁþ $d = $a || $b; # $d´Â 1; Âü $d = $a && $c; # $d´Â 1; Âü °¡ ¼º¸³ÇÕ´Ï´Ù. ³í¸® ¿¬»êÀÚ (||, &&)ÀÇ ÀçÁֺθ®±â : || ´Â ¾Õ°ú µÚÀÇ Âü °ÅÁþÀ» ¹ÙÅÁÀ¸·Î Àü üÀû Âü °ÅÁþÀ» ÆÇ°¡¸§ÇÏ´Â ¿¬»êÀÚÀÌÁö¸¸, ¾ÕÀÇ Á¶°ÇÀÌ °ÅÁþÀÏ ¶§ µÚÀÇ ¸í·É¾î ¸¦ ½ÇÇà½ÃŰ´Â ¿ªÇÒµµ ÇÕ´Ï´Ù. ¹°·Ð ¾ÕÀÇ Á¶°ÇÀÌ ÂüÀ̸é Àüü°¡ ÂüÀ̹ǷΠµÚÀÇ ¸í·É¾î´Â ½ÇÇàÇÒ »ý°¢µµ ¾Ê½À´Ï´Ù. µû¶ó¼­ ´ÙÀ½°ú °°Àº ¸í·ÉÀÌ °¡´ÉÇÕ´Ï´Ù. $a <= $b || ( $max = $a ); # C¶ó¸é if( a > b ) max = a; °ÚÁö¿ä. Æí¸®ÇÏÁö ¾Ê½À´Ï±î ? À§ÀÇ ¿¹Á¦¿¡¼­´Â $a°¡ $bº¸´Ù À۰ųª °°Áö ¾ÊÀ¸¸é µÚÀÇ $max = $a°¡ ½ÇÇàµË´Ï´Ù. AND ¿¬»êÀÚ (&&) ¶ÇÇÑ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. $a > $b && ( $max = $a ); Áï, $a°¡ ÂüÀÎ °æ¿ì¿¡ µÚÀÇ ( $max = $a )µµ ÂüÀÎÁö ½ÃÇèÇϱâ À§ÇØ ( $max = $a )¸¦ ½ÇÇà½ÃŰ´Â °ÍÀÔ´Ï´Ù. ±× ½ÇÇàÀÌ ³¡³ª°í ³­ ÈÄ Àüü½Ä $a > $b && ( $max = $a )ÀÌ ÂüÀÎÁö °ÅÁþÀÎÁö °¡´ÆµÇ´Âµ¥ ±× °á°ú´Â »ç¿ëÇÏ´ø ¾ÈÇÏ´ø ¿©·¯ºÐÀÇ ÀÚÀ¯ °ÚÁö¿ä. À§ÀÇ ¿¹¹®¿¡¼­ ( $max = $a )¿Í °°ÀÌ ()¸¦ »ç¿ëÇÑ °ÍÀº || ¶Ç´Â &&ÀÌ = º¸´Ù °è »ê½Ã ¿ì¼± ¼øÀ§°¡ ³ô±â ¶§¹®¿¡ °ýÈ£¸¦ »ç¿ëÇÏÁö ¾Ê°í $a > $b && $max = $a¿Í °°ÀÌ ÇßÀ» ¶§ $a > $b && $max°¡ ¸ÕÀú °è»êÀÌ µÇ°í ³ªÁß¿¡ = $a¶ó´Â ¾²·¹±â¸¸ ³²¾Æ¼­ ¿¡·¯ ¸Þ½ÃÁö°¡ ³ª¿À°í ½ÇÇàµÇÁö ¾Ê´Â°ÍÀ» ¸·±â À§Çؼ­ÀÔ´Ï´Ù. Á¤¸®Çؼ­ ¸»Çϸé À§ÀÇ °æ¿ìó·³ »ç¿ëµÇ´Â ||´Â "±×·¸Áö ¾ÊÀ¸¸é"ÀÇ ¶æÀ̰í &&´Â "±×·¯ÇÒ °æ¿ì¿¡"ÀÇ ¶æÀÌ µÇ´Â°ÍÀÔ´Ï´Ù. 10. PERL¿¡¼­ÀÇ ¿¬»êÀÚ(operator) - ±× ¿Ü ======================================= ,(comma) ¿¬»êÀÚ´Â ¿¬¼ÓµÈ ¸í·ÉÀÇ ½ÇÇà, ¸ñ·Ï³»¿¡¼­´Â ¿ä¼Ò°£ÀÇ ºÐ¸® µîÀ» ³ªÅ¸ ³À´Ï´Ù. ±×´ÙÁö Áß¿äÇÑ °ÍÀº ¾Æ´ÏÁö¸¸ °¡²ûÀº Æí¸®ÇÒ ¶§°¡ ÀÖ½À´Ï´Ù. $a = 1, $b = 3, print "@a and @b\n"; >, <, >=, >= # ¼ýÀÚÀÇ ºñ±³. if ( $a > $b ) { print "O.K."; } ==, !=, <=> # <=>´Â ¾ÕÀÇ º¯¼ö°¡ ÀÛÀ¸¸é -1, Å©¸é 1, ¾Õ°ú µÚÀÇ º¯¼ö°¡ # °°À¸¸é 0À» returnÇÕ´Ï´Ù. lt, gt, le, ge # ¹®ÀÚ¿­ÀÇ ºñ±³. "ba"´Â "bb"º¸´Ù ÀÛ½À´Ï´Ù(lt). eq, ne, cmp # cmp´Â ¼ýÀÚÀÇ <=>¿Í °°Àº ¿ªÇÒ. az´Â bbº¸´Ù ÀÛ½À´Ï ´Ù.(-1) 3 | 2 # bit°è»ê¿ë OR. 00000011 | 00000010 -> 00000011 -> 3 3 & 2 # bit°è»ê¿ë AND. 00000011 & 00000010 -> 00000010 -> 2 3 ^ 2 # bit°è»ê¿ë XOR. 00000011 ^ 00000010 -> 00000001 -> 1 11. ¿¬»êÀÚÀÇ ¿ì¼± ¼øÀ§. ======================= ÇÑ ¸í·ÉÇà¿¡¼­ ¿©·¯ Á¾·ùÀÇ ¿¬»êÀÚ°¡ »ç¿ëµÇ¾úÀ» ¶§, perl.exe´Â ¿¬»êÀÚµéÀÇ ¿ì ¼± ¼øÀ§¸¦ µûÁ®¼­ ¸ÕÀú °è»êµÉ ºÎºÐÀ» °áÁ¤ÇÏ¿© ¼ø¼­´ë·Î °è»êÀ» ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î 5 + 4 * 2 ÀÇ °æ¿ì ¾ÕÀÇ 5 + 4¸¦ ¸ÕÀú °è»êÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó µÚÀÇ 4 * 2¸¦ ¸ÕÀú °è»êÇÏ°í ±× ´ÙÀ½¿¡ 5 + 8À» °è»êÇÏ´Â °ÍÀÌÁö¿ä. ÀÌ ¶§ ¾ÕÀÇ 5 + 4¸¦ ¸ÕÀú °è»ê ½ÃŰ·Á¸é ( 5 + 4 ) * 2 ¿Í °°ÀÌ °ýÈ£·Î ¹­¾îÁÖ ¾î¾ß¸¸ ÇÕ´Ï´Ù. ¿ì¼± ¼øÀ§°¡ °°Àº ¿¬»êÀÚ ³¢¸®´Â ¾ÕÀÇ ¿¬»êÀÚ¿¡ ¿ì¼± ¼øÀ§°¡ ÀÖ½À´Ï´Ù. ¾î¶»°Ô ¾Æ´À³Ä°í¿ä ? 5 * 4 % 3 °ú 5 % 3 * 4¸¦ °¢°¢ ½ÇÇà½ÃÄÑ º¸½Ê½Ã¿À. ´ÙÀ½Àº ¿¬»êÀÚ »çÀÌÀÇ ¿ì¼± ¼øÀ§ÀÔ´Ï´Ù. ( perlop.txt ¹ßÃé ) left terms and list operators (leftward) left -> nonassoc ++ -- right ** right ! ~ \ and unary + and - left =~ !~ left * / % x left + - . left << >> nonassoc named unary operators nonassoc < > <= >= lt gt le ge nonassoc == != <=> eq ne cmp left & left | ^ left && left || nonassoc .. right ?: right = += -= *= etc. left , => nonassoc list operators (rightward) left not left and left or xor À§¿¡ ¼³¸íÇÏÁö ¾Ê¾Ò´ø ¿¬»êÀÚµéÀÌ ¸¹ÀÌ ÀÖÁÒ ? ÀÏ´ÜÀº Á¢¾î µÎ°í °¡¼¼¿ä. ¶Ç, ¿¬»êÀÚ not, and, or, xor´Â Perl 4.x¿¡¼­´Â ¾ø´Â °ÍµéÀÔ´Ï´Ù. Perl 5.x¿¡ ¼­ »ç¿ë°¡´ÉÇÑ ¿¬»êÀÚµéÀÌÁö¿ä. ¶Ç ±Ã±ÝÇØ¼­ µµÀúÈ÷ ¸ø ÂüÀ¸½Ã´Â ºÐ µéÀº Á¦°¡ ¿Ã·Áµå¸° PERL ¹®¼­ (perldocu.zip)Áß perlop.txt¸¦ ã¾Æ º¸¼¼¿ä. ******( ÇѸ¶µð )****** ÀÚ¹Ù°¡ ¾î¼°í,,, ÀÌ·± ¼¼»ó¿¡ À¢ ±¸¼®±âÇüÀÇ ¾ð¾î³Ä°í Ÿ¹ÚÇÏ½Ç ºÐµµ °è½Ç ÁÙ ¾Ð´Ï´Ù. ±×·¯³ª »ý°¢ÇØ º¸½Ê½Ã¿À. ÀÚ¹Ù°¡ ¼ÒÀ§ '°æÇâ'ÀÎ °ÍÀº Ʋ¸²¾øÁö¸¸ ÇöÀç ÁÖ·ù¶ó°í ÇÒ ¼ö ÀÖÀ»±î¿ä ? ÀÚ¹Ù´Â 32 ºñÆ® ±â¹ÝÀÇ o/s¿¡¼­ ºê¶ó¿ì¡ÀÌ °¡´ÉÇÑ °ÍÀ¸·Î ¾Ë°í ÀÖ½À´Ï´Ù. ¿ì¸® ³ª¶ó¿¡¼­ °³ÀÎÀ» Á¦¿ÜÇÑ ±â¾÷, ƯÈ÷ Áß¼Ò±â¾÷µéÀÇ ´ëºÎºÐÀÇ ¾÷¹«È¯°æÀÌ 32 ºñÆ® ¿ÀÆÛ·¹ÀÌÆÃ ½Ã½ºÅÛÀϱî¿ä ? ÷´Ü ±â¼úÀ» ½ÀµæÇÏ°í º¸Á¶¸¦ ¸ÂÃß¾î °¡¾ß ÇÏ´Â °ÍÀº ÄÄÇ»ÅÍ ÇÏ´Â »ç¶÷ÀÇ ÀÚ¼¼ÀÓÀÌ Æ²¸²¾øÁö¸¸ ¿©·¯ºÐ ÀÇ È¨ ÆäÀÌÁö¿¡ Á¢¼ÓÇÒ ¼ö¸¹Àº ÀáÀç °í°´µéÀÇ »çÁ¤À» °¡´ÆÇØ º¸´Â °ÍÀº ¶ÇÇÑ ºñ Áö´Ï½º ¸ÇÀÇ Àǹ«ÀÔ´Ï´Ù. ¾ÆÁ÷µµ, ±×¸®°í ÇâÈÄ ¾ó¸¶µ¿¾ÈÀº, 16 ºñÆ® ȯ°æ¿¡¼­ ÀÏÇÏ´Â ¿©·¯ºÐÀÇ °í°´µéÀ» »ý°¢ÇϽðí perlÀ» ±×³É Áö³ªÄ¡Áö ¸¶½Ê½Ã¿À. Âü µ· µÇ´Â Àϵµ ¾Æ´Ñµ¥ Á¦°¡ ¿Ö À̸® ÈïºÐÀÎÁö ¸ð¸£°Ú³×¿ä... ********************** 12. ÆÄÀÏ ´Ù·ç±â =============== Àú·±, ´«¿¡ ½Ö²¨Ç®ÀÌ Áö½Ã´Â±º¿ä. Áö·çÇÑ ¿¬»êÀÚ À̾߱⿴½À´Ï´Ù. °æ¿ì¿¡ µû¶ó ¿©·¯ºÐÀº ÆÄÀϰú µð·ºÅ丮¸¦ ´Ù·ç¾î¾ß ÇÒ ¶§°¡ ÀÖÀ¸¸®¶ó »ý°¢µË´Ï ´Ù. PERLÀÇ ÆÄÀÏ ´Ù·ç´Â ¼Ø¾¾´Â ¸Å¿ì ÈǸ¢ÇÕ´Ï´Ù. ÆÄÀÏÀÇ »óÅ ¶Ç´Â À̰ÍÀÌ ÆÄÀÏÀÎ Áö µð·ºÅ丮ÀÎÁö ¾Ë¾Æ³»±â À§Çؼ­ C¿Í °°Àº ¾ð¾î¿¡¼­´Â ´ë°³ int86x°°Àº ½Ã½ºÅÛ ÀÇÁ¸ÀûÀÎ ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¾ß ÇÕ´Ï´Ù. ±×·¯³ª PERL¿¡¼­´Â ¾î¶² ¿î¿µÃ¼Á¦¿¡¼­µµ °° Àº ¸í·ÉÀ» »ç¿ëÇÕ´Ï´Ù. ´ÜÁö ÂüÁ¶ ¸Þ´º¾óÀÌ ¿·¿¡ ÀÖ¾î¾ß ÇÑ´Ù´Â °Í »ÓÀÌÁÒ. ÆÄÀÏ ¹× µð·ºÅ丮¿¡ ´ëÇØ ¾Ë°í ½ÍÀº °æ¿ì ´ÙÀ½°ú °°Àº ÇÔ¼öµéÀ» »ç¿ëÇÕ´Ï´Ù. ±âº»ÀûÀÎ °Íµé¸¸ ³ª¿­ÇÕ´Ï´Ù.(perlfall.txtÀÇ -X FILEHANDLEÀ» º¸½Ê½Ã¿À.) ¹®¹ý: -X FILEHANDLE ¶Ç´Â -X FILE_OR_DIR_NAME -e ÆÄÀÏÀÌ Á¸ÀçÇϴ°¡ ? (ÂüÀ̸é 1, °ÅÁþÀ̸é 0À» ¸®ÅÏÇÕ´Ï´Ù.) -z ÆÄÀÏ Å©±â°¡ 0Àΰ¡ ? -s ÆÄÀÏÀÌ 0 ¾Æ´Ñ Å©±â¸¦ °®´Â°¡ ? (ÆÄÀÏÀÇ Å©±â¸¦ ¸®ÅÏÇÕ´Ï´Ù.) -f ÆÄÀÏÀÌ Æò¹üÇÑ ÆÄÀÏÀΰ¡ ? -d ÆÄÀÏÀ̸§ÀÌ µð·ºÅ丮Àΰ¡ ? -T ÆÄÀÏÀÌ ÅØ½ºÆ® ÆÄÀÏÀΰ¡ ? -B ÆÄÀÏÀÌ ÀÌÁø ÆÄÀÏÀΰ¡ ? -M ÆÄÀÏÀÌ »ý¼ºµÈÁö ¸îÀÏÀÌ µÇ¾ú´Â°¡ ? ( 0ºÎÅÍ ½ÃÀÛ ) ±×·³ ÆÄÀÏÀ» ÇÑ ¹ø ÀÐ¾î º¾½Ã´Ù. ÆÄÀÏÀ» Àаųª ¾²±â Àü¿¡´Â ¹Ýµå½Ã ÆÄÀÏ ÇÚµé À» »ý¼º, ÆÄÀÏÀ» '¿­¾î¾ß' Çϰí, ´Ù ÀÐÀº ÈÄ¿¡´Â '´Ý¾Æ¾ß' ÇÕ´Ï´Ù. ÆÄÀÏ Çڵ鿡 ´Â º¯¼öµé¿¡ ºÙ´Â $, @, %°°Àº °ÍµéÀÌ ºÙÁö ¾Ê½À´Ï´Ù. # mytype1.pl # µµ½ºÀÇ type, À¯´Ð½ºÀÇ cat ¸í·ÉÀ» Èä³»³»¾î º¾½Ã´Ù. $fileName = "hello.pl"; if( -d $fileName ) # -d $fileName && die "$fileName ...";¿Í °°À½. { die "$fileName is a directory.\n"; } # µð·ºÅ丮¸¦ typeÇÒ ¼ö´Â ¾øÁÒ. # die ÇÔ¼ö´Â ¸Þ¼¼Áö¸¦ Ãâ·ÂÇϰí ÇÁ·Î±×·¥ ½ÇÇàÀ» ÁߴܽÃŵ´Ï´Ù. -e $fileName || die "$fileName is not exist.\n"; -T $fileName || die "$fileName is not a text file.\n"; open( fileHandle, $fileName ) || die "Cannot open $fileName.\n"; @allLines = ; # ÇÚµéÀ» ÅëÇÏ¿© ¸ðµç ¹®ÀÚ¿­À» ¹è¿­·Î # ÀÐ¾î µéÀÔ´Ï´Ù. # ÆÄÀÏÀÌ ³Ê¹« Å©¸é Á» ¹®Á¦°¡ ÀÖ°ÚÁÒ. close( fileHandle ); # ´Ù ÀоúÀ¸´Ï ²À ´Ý½À´Ï´Ù. !!!!! print @allLines; # È­¸é¿¡ Ãâ·ÂÇÕ´Ï´Ù. ¾ÆÁÖ °£´ÜÇÏ°Ô ¸¸µé¾úÁÒ ? ¹®ÀÚ¿­À» ÇÑ ÁÙ¾¿ ÀÐÀ» ¼öµµ ÀÖ½À´Ï´Ù. ÇÚµéÀ» ¹è¿­¿¡ ÇÒ´ç(=)½ÃŰ¸é ¸ðµç ¹®ÀÚ ¿­ÀÌ ´Ù ÀÐÈ÷Áö¸¸ ÀÏ¹Ý º¯¼ö(scalar)¿¡ ÇÒ´ç½Ã۸é ÇÑ ÁÙ¸¸À» Àаí, ÆÄÀÏÀÇ ³¡ ¿¡ µµ´ÞÇßÀ» ¶§¿¡´Â "undefined value"(Á¤ÇØÁöÁö ¾ÊÀº °ª ?)À» ¸®ÅÏ ÇÕ´Ï´Ù. ÀÌ undefined value´Â Á¶°Ç½Ä¿¡¼­ »ç¿ëÇÏ¸é °ÅÁþÀ¸·Î Àνĵ˴ϴÙ. µû¶ó¼­, open( fileHandle, $fileName ) || die "Cannot open $fileName.\n"; while( $aLine = ) { print $aLine; } close( fileHandle ); # ´Ù ÀоúÀ¸´Ï ²À ´Ý½À´Ï´Ù. !!!!! ¿Í °°ÀÌ ÇÏ¸é ¾ÈÀüÇÏ°Ô ÆÄÀÏÀÇ ³¡±îÁö ÇÑ ÁÙ¾¿ ÀÐÀ¸¸é¼­ printÇÒ ¼ö ÀÖ´Â °ÍÀÌ Áö¿ä. ÆÄÀÏÀÇ Å©±â°¡ ³Ê¹« Ä¿¼­ ¸Þ¸ð¸® »ç¿ëÀÌ °ú´ÙÇÒ °Í °°Àº °æ¿ì¿¡´Â ÀÌ·¸°Ô ÇÑ ÁÙ¾¿ ÀоîµéÀ̴°͵µ ÁÁÀº ¹æ¹ýÀ̰ÚÁö¿ä. openÀº ÆÄÀÏÀ» ¿­°í close´Â ´Ý´Â ÇÔ¼öÀε¥, openÀÇ ¿©´Â µ¿ÀÛÀº ´Ù½Ã ºÐ·ùÇÏ¿© »ý°¢ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. open( fileHandle, "hello.pl" ); # hello.plÀ» ¾²±â ¸ðµå·Î ¿±´Ï´Ù. open( fileHandle, ">>hello.pl" ); # hello.plÀÇ ³¡¿¡¼­ºÎÅÍ Ãß°¡ÇÏ¿© # ¾²±â ¸ðµå·Î ¿±´Ï´Ù. open( fileHandle, "+perltest.htm" ) || die "Failed opening.\n"; print fileHandle <test of writing

Test of writing file in PERL

Hello. I am writing something to a file.

Be careful to close the file after completion of writing.

END_HTML close( fileHandle ); À§¿¡¼­ print ´ÙÀ½ÀÇ fileHandle´ÙÀ½¿¡ comma°¡ ¾øÀ½À» À¯ÀÇÇØ ÁÖ¼¼¿ä. Ãß°¡¾²±â ¸ðµå´Â µû·Î ¼³¸íÇÏÁö ¾Ê°Ú½À´Ï´Ù. ¼÷Á¦ÀÔ´Ï´Ù. ¿©±â±îÁö ÆÄÀÏ ´Ù·ç±â¿¡ ´ëÇÏ¿© °£´ÜÈ÷ »ìÆìº¸¾Ò½À´Ï´Ù. ´ÙÀ½Àº µð·ºÅ丮¿¡ ´ë ÇØ »ìÆìº¸°Ú½À´Ï´Ù. ÇÏǰÇÏÁö ¸¶¼¼¿ä. 13. µð·ºÅ丮 ´Ù·ç±â =================== µð·ºÅ丮´Â ÇÏÀ§ µð·ºÅ丮µé°ú ÆÄÀϵéÀÇ ¸í¼¼¼­¸¦ ´ã°í ÀÖ½À´Ï´Ù. ¿©±â¼­´Â µð ·ºÅ丮 »çÀ̸¦ ¿òÁ÷ÀÌ´Â °Íµéº¸´Ù´Â µð·ºÅ丮°¡ ´ã°í ÀÖ´Â ¸í¼¼¸¦ µé¿©´Ùº¸´Â °Í¿¡ ´ëÇÏ¿© »ìÆìº¸µµ·Ï ÇϰڽÀ´Ï´Ù. ÆÄÀÏ¿¡ ÇÚµéÀÌ ÀÖµíÀÌ µð·ºÅ丮¸¦ ¿©´Ý´Â µ¥¿¡µµ ÇÚµéÀÌ ÀÖ½À´Ï´Ù. ¶Ç µð·ºÅ丮 ¸¦ ¿©´ÝÀ» ¶§¿¡´Â opendir¿Í closedirÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. readdir ÇÔ¼ö´Â µð·ºÅ丮¿¡ ÀÖ´Â ¸ðµç µð·ºÅ丮 ¹× ÆÄÀϵéÀÇ À̸§À» ÀÐ¾î ¸ñ·Ï ÇüÅÂ(¹è¿­)·Î ¸®ÅÏÇÕ´Ï´Ù. Áï @myArray = readdir( DirHandle ); °ú °°ÀÌ ÇÏ¸é µË´Ï´Ù. ¹é¹®ÀÌ ºÒ¿© ÀϰßÀÌ°í ¹é°ßÀÌ ºÒ¿© ÀÏÇàÀ̶ó. # readdir.pl opendir(dirHandle, ".") || die "Failed opening.\n"; @files = readdir( dirHandle ); closedir dirHandle; print @files; # ¾Ë¾Æ¸Ô±â Èûµé°Ô ÇÁ¸°Æ®µË´Ï´Ù. print "\n"; print "@files"; # À̰ÍÀº º¼¸¸ÇÏÁö¿ä ? Àá±ñ ¸»¾¸ µå¸° ÀûÀÌ # Àִµ¥ ¹è¿­ÀÌ Ä¡È¯µÉ ¶§¿¡ °¢ ¿ä¼Ò »çÀÌ¿¡ # °ø¹éÀÌ Çϳª¾¿ µé¾î°©´Ï´Ù. print "\n"; ÀÐÇôÁø ÆÄÀÏ ¹× µð·ºÅ丮 ¸ñ·Ï¿¡¼­ ¸î °¡Áö¸¸ °ñ¶ó¼­ ¾²°í ½ÍÀº ºÐµµ °è½Ã°ÚÁö ¿ä. ³ªÁß¿¡ ¶Ç ±âȸ°¡ ÀÖÀ» °Ì´Ï´Ù. ±× ¶§±îÁö ¸ø ±â´Ù¸®½Ç ºÐµéÀº ÇÔ¼ö grep¿¡ ´ë ÇØ ã¾Æº¸¼¼¿ä. sort ÇÔ¼öµµ º¼ °¡Ä¡°¡ ÀÖ½À´Ï´Ù. 14. ¸í·ÉÇà ÀÎÀÚ - @ARGV ¹è¿­ ============================ ÆÄÀÏ ´Ù·ç±â¿Í µð·ºÅ丮 ´Ù·ç±â¿¡¼­ ÇѰ¡Áö ºÒ¸¸ÀÌ ÀÖ¾úÀ» ÁÙ·Î ¾Ð´Ï´Ù. ¿Ö ÆÄ ÀÏ À̸§°ú µð·ºÅ丮 À̸§À» ¹Ì¸® Á¤Çسõ°í¼­ À¯¿ë¼ºÀ» Ãà¼Ò ½ÃŰ´À³Ä°í¿ä... Á¶±Ý ´õ ¿ì¾ÆÇϰÔ, type myfile.htmÇÒ ¼ö ÀÖÀ» ÅÙµ¥ ¸»ÀÔ´Ï´Ù. ¹°·ÐÀÌÁö¿ä. ÁÁÀº Áú¹®ÀÔ´Ï´Ù. ¿ª½Ã ¹ÎÁÖ ÄÄÇ»ÅÍ ÀïÀÌ´Â ´Ù¸£±º¿ä. ¸í·ÉÇà¿¡ ºÙ¿©Áö´Â ÀÎÀÚ´Â @ARGV¶ó´Â ¹è¿­¿¡ ´ã°ÜÁ®¼­ ÇÁ·Î±×·¥À¸·Î ³Ñ°ÜÁý´Ï ´Ù. ´ç¿¬È÷ ÀÎÀÚÀÇ ¸¶Áö¸· ÂüÁ¶¹øÈ£´Â $#ARGV°¡ µÇ°ÚÁö¿ä. ÀÎÀÚ°¡ Çϳªµµ ¾øÀ» ¶§¿¡ $#ARGVÀÇ °ªÀ» Ãâ·Â ½ÃÄѺ¸¸é -1À» ÇÁ¸°Æ®ÇÕ´Ï´Ù. Àǽɳª¸é Á÷Á¢ ÇØ º¸¼¼¿ä. print "$#ARGV\n"; ÀÌ ÇÑÁÙÀÌ¸é µË´Ï´Ù. ±×¸®°í perl test.pl, perl test.pl hey, µîÀ» ÇØ º¸¼¼¿ä. ÆÄÀÏ ´Ù·ç±â¿¡¼­ ¸¸µé¾ú´ø ÇÁ·Î±×·¥À» ´Ù½Ã Â¥º¾½Ã´Ù. # mytype2.pl # µµ½ºÀÇ type, À¯´Ð½ºÀÇ cat ¸í·ÉÀ» Èä³»³»¾î º¾½Ã´Ù. if( $#ARGV < 0 ) { die "Supply a file name, please.\n"; } if( $#ARGV > 0 ) { die "Too many parameter.\n"; } $fileName = shift( @ARGV ); if( -d $fileName ) { die "$fileName is a directory.\n"; } # µð·ºÅ丮¸¦ typeÇÒ ¼ö´Â ¾øÁÒ. # die ÇÔ¼ö´Â ¸Þ¼¼Áö¸¦ Ãâ·ÂÇϰí ÇÁ·Î±×·¥ ½ÇÇàÀ» ÁߴܽÃŵ´Ï´Ù. -e $fileName || die "$fileName is not exist.\n"; -T $fileName || die "$fileName is not a text file.\n"; open( fileHandle, $fileName ) || die "Cannot open $fileName.\n"; while( $aLine = ) # Çѹø¿¡ ÇÑÁÙ¾¿ ÀнÀ´Ï´Ù. { print $aLine; } close( fileHandle ); # ´Ù ÀоúÀ¸´Ï ²À ´Ý½À´Ï´Ù. !!!!! ¿¹Á¦¸¦ ¸¸µé¸é¼­ °¡´ÉÇÑ ½Ç¼ö°¡ ¾øµµ·Ï test¸¦ ÇØ º¾´Ï´Ù. Ȥ½Ã ±ô¹Ú Àذí test ¸¦ ÇÏÁö ¸øÇѵ¥¼­ ½Ç¼ö°¡ ³ª¿Ã ¼öµµ ÀÖ°ÚÁö¿ä. ±× ½Ç¼ö¸¦ ã¾Æ³»´Â °ÍÀº ¹Ù·Î ?? ¿¹ ! ¿©·¯ºÐÀÇ ¼÷Á¦ÀÔ´Ï´Ù. Á¤ ¸ð¸£½Ã¸é ¸ÞÀÏ ÁÖ¼¼¿ä. °°ÀÌ Ã£¾Æº¸µµ·Ï ÇÏÁö¿ä. ±×·¸´Ù°í ¿åÀº Çϱ⠾ø±é´Ï´Ù. 15. Á¶°Ç - if¿Í unless ======================= À§ÀÇ ¿¹Á¦ mytype2.plÀ» º¸¸é ¾Æ·¡¿Í °°Àº Á¶°ÇºÎ ½ÇÇà ¸í·ÉÀÌ ÀÖ½À´Ï´Ù. if( $#ARGV < 0 ) { die "Supply a file name, please.\n"; } ±× Àǹ̴ ¸¸¾à if´ÙÀ½ÀÇ ( )¾È¿¡ ÀÖ´Â ³»¿ëÀÌ ÂüÀ̸é, Áï $#ARGV°¡ 0º¸´Ù ÀÛÀ» °æ¿ì¿¡´Â, { }·Î ½×¿© ÀÖ´Â ºí·Ï Àüü¸¦ ½ÇÇà½Ã۰í, ±×·¸Áö ¾ÊÀ¸¸é(°ÅÁþÀ̸é) ½ÇÇà½ÃŰÁö ¾Ê´Â´Ù´Â °ÍÀÔ´Ï´Ù. ifÀÇ Çü½ÄÀº ´ÙÀ½°ú °°½À´Ï´Ù. if ( ½Ä ) { do_something; } else # '½Ä'ÀÌ °ÅÁþÀÏ °æ¿ì ºí·ÏÀ» ½ÇÇà. else´Â ¾øÀ» ¼öµµ ÀÖÀ½. { do_others; } ¶Ç´Â, if ( ½Ä ) { do_something; } elsif( ´Ù¸¥ ½Ä ) # elsif´Â ¸î°³°¡ µé¾î°¡µµ ÁÁÀ½. { # ÁÖÀÇ: elseif¶ó°í ÇÏÁö ¾Êµµ·Ï À¯ÀÇÇÒ °Í. do_anything; # '½Ä'ÀÌ °ÅÁþÀ̰í '´Ù¸¥ ½Ä'ÀÌ ÂüÀÏ ¶§ ½ÇÇà. } else { do_others; } ifÀÇ ¹Ý´ë °³³äÀ¸·Î unless°¡ ÀÖ½À´Ï´Ù. Áï, Á¶°Ç½Ä¿¡ °ÅÁþÀ¸·Î ÆÇ¸íÀÌ µÉ °æ¿ì ¿¡¸¸ ºí·Ï³»ÀÇ ¸í·É(µé)À» ½ÇÇà½Ãŵ´Ï´Ù. @a = 3; unless ( @a == 5 ); { print "Hey\n"; } À§¿¡¼­ hey´Â Ãâ·ÂÀÌ µÉ±î¿ä ¾ÈµÉ±î¿ä ??? °£´ÜÇÑ ¸í·ÉÀÇ ½ÇÇàÀ¸·Î ÀÌ·¸°Ô ÇÏ´Â ¼öµµ ÀÖ½À´Ï´Ù. print "Yes\n" if $answer == 3; print "Shut up !\n" unless $mouth eq "quiet"; Á¶°Ç½Ä°ú ¸í·É¹®ÀÇ ¼ø¼­°¡ À§¿¡ º¸¿©µå¸° °Í°ú´Â ±¸¼ºÀÌ Á¶±Ý ´Ù¸£Áö¿ä ? ±×·¯ ³ª ³»¿ëÀº ´Ù¸£Áö ¾Ê½À´Ï´Ù. ¶Ç, ¿¬»êÀÚ À̾߱⿡¼­ ¼³¸íÇÑ °Íó·³ $answer == 3 && print "Yes\n"; $mouth eq "quiet" || print "Shut up !\n"; ¿Í °°ÀÌ if, unless°¡ ¾Æ´Ñ &&, ||¸¦ »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. 16. ¹Ýº¹ ½ÇÇà - for, foreach, while, until ========================================== for --- È«±æµ¿°ú 108Àå»çµéÀÇ ¾Æ¸§´Ù¿î À̾߱⸦ ±â¾ïÇϽʴϱî ? ÀÌ·± ³»¿ëÀ̾úÁö¿ä. ... Àü·« for( $i = 0; $i < 109; $i++ ) { print "µû¾Ç "; } # 109¹øÀ» µû¾Ç µû¾Ç µû¾Ç µû¾Ç µû¾Ç µû¾Ç µû¾Ç !!! ... ÈÄ·« forÁ¦¾î¹®Àº µÚµû¶ó ¿À´Â {}ºí·Ï³»ÀÇ ¸í·ÉµéÀ» ÀÏÁ¤ÇÑ È½¼ö¸¸Å­ ¹Ýº¹ÇÏ¿© ½ÇÇà ½ÃÄÑÁÖ´Â Á¦¾î¹®ÀÔ´Ï´Ù. for ´ÙÀ½ÀÇ °ýÈ£ ¾ÈÀÇ ³»¿ëÀº ; ±âÈ£¿¡ ÀÇÇÏ¿© 3ºÎºÐÀ¸·Î ³ª´µ¾îÁ® ÀÖ½À´Ï´Ù. for( ÃʱâÈ­; Á¶°Ç; Á¶°Ç ºñ±³ ÈÄ ÃëÇÏ´Â Çൿ ) { ¸Å¹ø ÇØ¾ßÇÒ ÀÏ; } È«±æµ¿ÀÇ ¿¹Á¦¸¦ º¸¸é, $i¶ó´Â ÀÏ¹Ý º¯¼ö¸¦ 0À¸·Î ÃʱâÈ­ÇÑ ´ÙÀ½¿¡ $iÀÇ °ªÀÌ 109º¸´Ù ÀÛÀºÁö¸¦ °Ë»çÇÏ°í ¸¸ÀÏ ÀÛÀ¸¸é ºí·Ï ¾ÈÀÇ ³»¿ëÀ» ½ÇÇàÇÑ ÈÄ $iÀÇ °ªÀ» 1¸¸Å­ Áõ°¡½Ãŵ´Ï´Ù. ±×¸®°í ´Ù½Ã $iÀÇ °ªÀ» Á¶»ç, ½ÇÇà, Áõ°¡¸¦ $iÀÇ °ªÀÌ 109 º¸´Ù °°°Å³ª Ŭ ¶§±îÁö ¹Ýº¹ÇÕ´Ï´Ù. È«±æµ¿ÀÇ ¿¹Á¦¸¦ º¸½Ã°í ¶Ç ´Ù¸¥ ¿¹Á¦µéÀ» ¸¸µé¾î º¸½Ê½Ã¿À. ¼÷Á¦¸¦ ³» µå¸±±î¿ä ? Âü»õ 10¸¶¸®°¡ Àü±êÁÙ À§¿¡¼­ ³ë·¡ÇÕ´Ï´Ù. ù° Âü»õ´Â "±", µÑ°´Â "°Àè", ¼Â°´Â ¶Ç "±"....¿­Â°´Â "°Àè". for loop¿Í % ¿¬»êÀÚ ±×¸®°í if¸¦ ÀÌ¿ëÇÏ¿© ³ë·¡¸¦ ½ÃÄѺ¸¼¼¿ä. ÇѱÛÀ» ¶ç¿ì±â ±ÍÂúÀ¸¸é zag, zazag ÇØµµ µÇ°ÚÁö¿ä. È«±æµ¿ÀÇ À̾߱⸦ ÀÌ·¸°Ô ¾µ ¼öµµ ÀÖ½À´Ï´Ù. for ( 1..109 ) { print "µü "; } °£´ÜÇÏÁÒ. ÀÌ ÇüÅ´ ¾î¶² ¸ñ·Ï( 1..109´Â 1¿¡¼­ 109±îÁöÀÇ ¸ñ·ÏÀÔ´Ï´Ù.)ÀÇ °¢ ¿ä¼Ò¸¶´Ù Çѹø¾¿ ÀÏÁ¤ ¸í·É¹®À» ¹Ýº¹ÇÏ´Â Á¦¾î¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù. ÀÌ·± °Íµµ ÀÖ½À´Ï´Ù. for ( 1..10, " hello ", "world ", "again\n" ) { print; } °á°ú´Â "12345678910 hello world again"À¸·Î Ãâ·ÂµË´Ï´Ù. ÀÌ°Ç Á» ÀÌ»óÇÏÁÒ ? À̰͸¸ ¾Ë¾ÆµÎ¼¼¿ä. ÀϹݺ¯¼ö(scalar)°¡ ÀÖ¾î¾ßÇÒ ÀÚ¸®¿¡ ¾Æ¹«°Íµµ º¸ÀÌÁö ¾ÊÀ¸¸é ´ë°³´Â ±× ÀÚ¸®¿¡ "$_"¶ó´Â º¯¼ö°¡ ÀÖ´Â °ÍÀ¸·Î °¡Á¤ÀÌ µË´Ï´Ù. for( 1..109 )¿¡¼­´Â $_°¡ 1·Î ÃʱâÈ­µÇ¾î 109±îÁö °è¼ÓÇÏ¿© 2, 3, 4·Î Çѹø¾¿ ÇÒ´çµË´Ï´Ù. ±×·¸°Ô Çѹø¾¿ ÇÒ´çµÉ ¶§¸¶´Ù print "µü"ÀÌ ½ÇÇàµÇ´Â°ÍÀÌ °í, for ( 1..10, " hello ", "world ", "again\n" )¿¡¼­´Â 1¿¡¼­ 10±îÁö (Á¡ÀÌ µÎ °³ º¸À̽ÃÁÒ ? 1..10 ) ±× ´ÙÀ½¿¡´Â " hello ", "world ", "again\n"ÀÌ Çѹø ¾¿ $_¿¡ ÇÒ´çµË´Ï´Ù. ½ÇÇàµÇ´Â ºÎºÐ¿¡¼­´Â ¶Ç print¿¡ ³Ñ°ÜÁö´Â ÀÎÀÚ°¡ ¾øÀ¸¹Ç ·Î $_°¡ ÀÖ´Â °ÍÀ¸·Î °¡Á¤ÇÏ´Â °ÍÀÌÁö¿ä. print;¸¦ print($_);·Î ¹Ù²Ù¾î ½áµµ °á°ú´Â °°ÀÌ ³ª¿É´Ï´Ù. ÇÒ ¼ö ÀÖ´Â ÇÑ, Á÷Á¢ ½ÇÇàÀ» ½ÃÄÑ º¸¼¼¿ä. Ȥ½Ã Á¦°¡ °ÅÁþ¸»À» Çϰí ÀÖ´ÂÁöµµ ¸ð¸£Áö ¾Ê½À´Ï±î ? foreach ------- ¹è¿­ÀÇ ¸¶Áö¸· ÂüÁ¶¹øÈ£´Â $#array_nameÀ¸·Î ¾Ë ¼ö ÀÖ´Ù°í Çß½À´Ï´Ù. for ( $elem = 0; $elem <= $#myArray; $elem++ ) { print $myArray[$elem]; # °¢ ¿ä¼Ò´Â ÀϹݺ¯¼öÀ̹ǷΠ# @°¡ ¾Æ´Ñ $¸¦ ºÙÀδ٠Çß½À´Ï´Ù. } À§ÀÇ ¿¹Á¦´Â ¹è¿­ @myArrayÀÇ °¢ ¿ä¼Ò¸¦ Ãâ·ÂÇÏ´Â ¹®ÀåÀÔ´Ï´Ù. foreach´Â ÀÌ·¯ÇÑ »óȲ¿¡¼­ ¼¼»ó»ìÀ̸¦ Á» ´õ ³Ë³ËÇÏ°Ô ÇØ ÁÝ´Ï´Ù. foreach $elem ( @myArray ) { print $myArray[$elem]; # °¢ ¿ä¼Ò´Â ÀϹݺ¯¼öÀ̹ǷΠ# @°¡ ¾Æ´Ñ $¸¦ ºÙÀδ٠Çß½À´Ï´Ù. } foreach´Â ¸ñ·ÏÀ¸·Î »ý°¢µÇ´Â °Íµé¿¡ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹è¿­, hash, ÅØ½ºÆ® ÆÄÀÏ µîµî.. hash (associative array)ÀÇ ¿¹¸¦ µé¾î º¸µµ·Ï ÇÏÁö¿ä. # hash.pl %myhash = ( "apple", 3, "pear", 10, "banana", 4, "monkey", 2, ); $total = 0; foreach $eachKey ( keys %myhash ) # key¶ó´Â ÇÔ¼ö´Â hashÀÇ 'Ű'µé # ¸¸À» ¸ð¾Æ ¹è¿­·Î ¹­¾îÁÝ´Ï´Ù. { print "$eachKey\t", $myhash{$eachKey}, "\n"; $total += $myhash{$eachKey}; } print "\nTotal\t$total\n"; # \t´Â ÅÇÀÔ´Ï´Ù. Ãâ·ÂÀÌ ¾î¶»°Ô µÇ´ÂÁö Á÷Á¢ ÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù. ¹é°ßÀÌ ºÒ¿© ÀÏÇàÀ̶ó´Ï±î ¿ä... À§ÀÇ foreach $eachKey ( keys %myhash )°¡ Çò°¥¸®´Â ºÐµéÀ» À§ÇÏ¿© °£´ÜÈ÷ ¸» ¾¸µå¸³´Ï´Ù. key¶ó´Â ÇÔ¼ö´Â hashÀÇ 'Ű'µé( À§ ¿¹¹®ÀÇ °æ¿ì apple, pear, banana, monkey°¡ keyÀÔ´Ï´Ù.)¸¸À» ¸ð¾Æ ¹è¿­·Î ¹­¾îÁÝ´Ï´Ù. $myhash{$eachKey} ´Â °¢ Ű¿¡ ´ëÇÑ °ª( À§ ¿¹¹®ÀÇ °æ¿ì °¢°¢ 3, 10, 4, 2 )À» ¸®ÅÏÇÕ´Ï´Ù. ½±°Ô Ç®¾î ³õÀ¸¸é, ... @arrayOfKey = keys %myhash; foreach $eachKey ( @arrayOfKey ) ... ¿Í °°½À´Ï´Ù. ¹è¿­¿¡¼­ »ç¿ëÇÏ´Â foreach¿Í ¶È°°Àº ³»¿ëÀÌÁö¿ä. foreach´Â ½ÉÁö¾î ÆÄÀϳ»ÀÇ °¢ ÁÙ¿¡ ´ëÇØ¼­µµ Àû¿ëÀÌ µË´Ï´Ù ! # mytype3.pl if( $#ARGV < 0 ) { die "Supply a file name, please.\n"; } if( $#ARGV > 0 ) { die "Too many parameter.\n"; } $fileName = shift( @ARGV ); if( -d $fileName ) { die "$fileName is a directory.\n"; } -e $fileName || die "$fileName is not exist.\n"; -T $fileName || die "$fileName is not a text file.\n"; open( fileHandle, $fileName ) || die "Cannot open $fileName.\n"; foreach $aLine () { print $aLine; } close( fileHandle ); # ²À, ²À, ²À, ²À ´ÝÀ¾½Ã´Ù. Âü Æí¸®ÇÑ ¹°°ÇÀÌÁö¿ä ? ¶Ç for ( 1..10, " hello ", "world ", "again\n" )ÀÇ for¸¦ foreach·Î ¹Ù²Ù¾î µµ °°Àº °á°ú¸¦ ³º½À´Ï´Ù. while ----- ¾î¶² Á¶°Ç½ÄÀÌ ÂüÀÎ µ¿¾È µÚµû¶ó ¿À´Â ºí·Ï³»ÀÇ ¸í·ÉµéÀÌ °è¼ÓÇØ¼­ ½ÇÇàµË´Ï´Ù. $i = 0; while ( $i < 109 ) { print "µü "; $i++; } ¾îµð¼±°¡ º» µíÇÏÁö¿ä ? $i°¡ 109º¸´Ù ÀÛÀº µ¿¾È¸¸ print "µü ";°ú $i++;°¡ °è ¼Ó ½ÇÇàµË´Ï´Ù. until ----- untilÀº whileÀÇ ¹Ý´ë °³³äÀÔ´Ï´Ù. Áï Á¶°ÇÀÌ °ÅÁþÀÎ µ¿¾È¸¸ ½ÇÇàÀÌ µË´Ï´Ù. $i = 0; until ( $i >= 109 ) { print "µü "; $i++; } À§ÀÇ while°ú untilÀÇ Çü½Ä¿¡¼­´Â Á¶°Ç½ÄÀÌ ¸ÕÀú Å×½ºÆ® µË´Ï´Ù. µû¶ó¼­ ¸Ç ó À½ºÎÅÍ Á¶°Ç½ÄÀÌ °ÅÁþÀ̰ųª(while) ÂüÀÎ(until) °æ¿ì¿¡ ºí·ÏÀº ÀüÇô ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. ±×·± ÇüÅÂÀÇ ½ÇÇàÀÌ ÇÊ¿äÇÏ¸é ±×·¸°Ô ¾²½Ã¸é µË´Ï´Ù. ±×·¯³ª, ÀÏ´Ü ÇÑ ¹ø ½ÇÇàÀÌ µÇ°í³­ ÈÄ¿¡ Å×½ºÆ® µÇ¾î¾ß ÇÒ °æ¿ì¿¡´Â ¾Æ·¡Ã³·³ do¿Í ÇÔ²² »ç¿ë ÇÕ´Ï´Ù. ******( ½Å¼Ò¸® )****** ÀÚ²Ù loop¿¡ °üÇÑ À̾߱⸸ ÇÏ´Ï±î ¸Ó¸®°¡ ¹ð¹ð(loop) µ½´Ï±î ? Á¶±Ý¸¸ ´õ ÀÐ¾î º¸¼¼¿ä. Âü´ÂÀÚ¿¡°Ô º¹ÀÌ ÀÖ´ä´Ï´Ù. ********************** do ±×¸®°í while/until --------------------- while, until°ú Å« Â÷ÀÌ´Â ¾ø½À´Ï´Ù. ¾ÏÈ£¸¦ Á¡°ËÇÏ´Â °£´ÜÇÑ ÇÁ·Î±×·¥À» º¾½Ã ´Ù. # pwd.pl do { print "Enter password : "; $password = ; # Á¶±Ý »ö´Ù¸¥ °ÍµéÀÌ ³ª¿À³×¿ä. chop( $password ); } while( $password ne "hack" ); # ne´Â ¹®ÀÚ¿­À» ºñ±³ÇÏ´Â not equal # ¿¬»êÀÚ¶ó°í Çß½À´Ï´Ù. print "Well done !\n"; ºí·Ï³»ÀÇ ¸í·ÉµéÀº ´«Ä¡ º¸Áö¾Ê°í ÀÏ´Ü ½ÇÇàÀÌ µË´Ï´Ù. ±× ´ÙÀ½¿¡ Á¶°Ç½ÄÀÌ Âü ÀÎÁö ½ÃÇèµÇ°í ÂüÀÌ¸é ºÒ·ÏÀÇ ¸í·ÉµéÀÌ ¹Ýº¹ÀÌ µÇ°í °ÅÁþÀÌ¸é ºí·ÏÀÇ ´ÙÀ½À¸·Î ³Ñ¾î°©´Ï´Ù. While°ú ´Ù¸¥Á¡Àº ºí·ÏÀÇ ¸í·ÉµéÀÌ ÀÏ´Ü ÇѹøÀº ½ÇÇàÀÌ µÈ ÈÄ¿¡ Á¶ °Ç½ÄÀÌ ½ÃÇèµÈ´Ù´Â Á¡ÀÔ´Ï´Ù. # pwd2.pl do { print "Enter password : "; $password = ; # ÀÚ²Ù ½Å°æ¾²Áö ¸¶¼¼¿ä. ¸»¾¸µå¸±Å×´Ï. chop( $password ); # À̰͵µ ... } until( $password eq "hack" ); # until°ú eqÀÌ ¾²¿´Áö¿ä ? # eq´Â equalÀ̶õ°É ´Ù ¾Æ½Ã´Â±º¿ä. print "Well done !\n"; pwd.pl°ú pwd2.plÀÌ ´Ù¸¥°ÍÀº while°ú until, ne¿Í eq »ÓÀÔ´Ï´Ù. ÆÄÀÏ Àбâ ÇÒ ¶§ $aLine = ¸¦ ±â¾ïÇϽÃÁÒ ? À¯´Ð½º¿¡¼­´Â ¸ðµç ±ø Åë(Űº¸µå, µð½ºÇ÷¹ÀÌ, ÇÁ¸°ÅÍ µîµî)µéÀ» ÆÄÀÏ·Î »ý°¢ÇÑ´Ù´Â °ÍÀº ÀÌ¹Ì Àß ¾Æ ½Ç°Ì´Ï´Ù. PERL¶ÇÇÑ ±× µ¿³×¿¡¼­ Ãâ»ýµÈÁö¶ó ±ÛÀÚ¸¦ Űº¸µå·Î ÀÔ·Â ¹ÞÀ» ¶§ Ű º¸µå¿¡ STDINÀ̶ó´Â ÆÄÀÏ ÇÚµéÀ» ÇÒ´ç½ÃÄѼ­ ±× ÇÚµéÀ» ÅëÇØ ÀÔ·ÂÀ» ¹Þ½À´Ï´Ù. ±×·¡¼­ $passwork = ;Çϸé È­¸é¿¡ Ä¿¼­°¡ ±ô¹ÚÀ̸鼭 ÀÔ·ÂÀ» ±â´Ù·È´Ù°¡ ¸¶Áö¸·¿¡ ¸®ÅÏ۸¦ ¹ÞÀ¸¸é $password¿¡ ÀԷ¹ÞÀº ¹®ÀÚ¿­°ú ¸®ÅÏ(\n)¹®ÀÚ¸¦ ÀúÀå ½Ãŵ´Ï´Ù. ±×·±µ¥ ¸Ç ³¡¿¡ º¸¸é $password¸¦ "hack"°ú ºñ±³¸¦ ÇÏ´Â ºÎºÐÀÌ ÀÖ´Â µ¥, ¹®ÀÚ¿­ "hack"¿¡´Â "\n"ÀÌ Æ÷ÇԵǾî ÀÖÁö ¾ÊÁö¿ä. ±× "hack"°ú ºñ±³½Ã۱â À§ÇØ $password¿¡ ÀúÀåµÈ ¹®ÀÚ¿­ÀÇ ¸Ç³¡¿¡ Ʋ¸²¾øÀÌ ÀúÀåµÇ¾î ÀÖÀ» "\n"¹®ÀÚ¸¦ ¾ø¾Ö±â À§ÇØ chopÀ̶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. chopÀº ¹®ÀÚ¿­ÀÇ ¸Ç µÚ¿¡ ÀÖ´Â ÇÑ ¹®ÀÚ¸¦ Àß¶óÁÖ´Â ÇÔ¼öÀÔ´Ï´Ù. ¶ó¸é ²úÀÏ ¶§ ÆÄ¸¦ ¶Ñ²±ÀÌ ¿­¸° ³¿ºñÀ§¿¡ ´ë°í Ä® ·Î chop, chop, chopÃļ­ ½ä¾î ³Ö´Â°ÍÀ» "chop up"À̶ó ÇѴٴ±º¿ä. loopÀÇ ÇÑ °¡¿îµ¥¿¡¼­ . . . -------------------------- loopÀÌ ¹Ýº¹½ÇÇàµÇ°í ÀÖ´Â Áß°£¿¡ Á¶±Ý ºø³ª°¡°í ½ÍÀº ¶§°¡ ÀÖ½À´Ï´Ù. °£´ÜÈ÷ ¼Ò°³Çϵµ·Ï ÇÏÁö¿ä. << next >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C¾ð¾îÀÇ continue¿Í °°½À´Ï´Ù. # next.pl for ( 1..9 ) { print "fore $_\n"; next unless $_ % 3; # 3ÀÇ ¹è¼ö¿¡¼­¸¸ ¸ÇóÀ½À¸·Î µ¹¾Æ°¡¼­ °è¼Ó. print "aft $_\n"; # $_ÀÌ 3ÀÇ ¹è¼öÀ̸é ÀÌ ÇàÀº ½ÇÇàµÇÁö ¾ÊÀ½. } print "End.\n"; while°°Àº °ÍÀ¸·Îµµ ½ÇÇèÇØ º¸¼¼¿ä. (¼÷Á¦) << last >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C¾ð¾îÀÇ break¿Í °°½À´Ï´Ù. # last.pl for ( 1..9 ) { print "fore $_\n"; # $_´Â À§¿¡¼­ ¼³¸í µå·È½À´Ï´Ù. last unless $_ % 3; # 3ÀÇ ¹è¼ö¿¡¼­ ºí·Ï ´ÙÀ½À¸·Î ³Ñ¾î°¨. print "aft $_\n"; } print "End.\n"; ¾Æ·¡´Â À§ ¿¹Á¦ÀÇ c ¹öÁ¯À̰ÚÁö¿ä. # break.c for ( int i = 1; i <= 9; i++ ) { printf( "fore %d\r\n", i ); if( ! ( i % 3 ) ) break; printf( "aft %d\r\n", i ); } printf( "End.\r\n" ); À§ÀÇ ¿¹Á¦¿¡¼­ 4¿¡¼­ 9±îÁö´Â ¾Æ¿¹ ¾ó±¼µµ ¸ø ³»¹Ó´Ï´Ù. ½ÇÇèÇØº¸¼¼¿ä. << redo >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> redo´Â next¿Í ºñ½ÁÇÏÁö¸¸ Àüü ºí·ÏÀÇ Àç½ÇÇàÀüÀÇ ÀμöÀÇ Áõ°¡ µîÀ» ´Ù½Ã ÇÏÁö ¾Ê½À´Ï´Ù. ¸»ÀÌ Á» ²¿À̳׿ä. Áï for ( $i = 0; $i < 10; $i++ )¿¡¼­ $i++¸¦ ÇÏÁö ¾Ê´Â´Ù´Â ¶æÀÔ´Ï´Ù. ¿¹Á¦¸¦ º¸½Ã°í Á÷Á¢ ½ÇÇàÇØ º¸½Ê½Ã¿À. ¿¹Á¦¸¦ Àß ºÐ¼®ÇØ º¸½Ã¸é Á¦°¡ ¹«½¼¸»À» ÇÏ·Á´ÂÁö Àß ¾Æ½Ç°ÍÀÔ´Ï´Ù. ´ÙÀ½Àº ¾ÏÈ£¸¦ ¹Þ´Âµ¥ À־ 10¹øÀÇ ±âȸ¸¦ ÁÖµÇ, ¸¶Áö¸· ÇÑÀÚ¸¦ À߸ø ÃÄ ³Ö¾ú À» °æ¿ì¿¡´Â ¿ì¿¬ÇÑ ½Ç¼öÀÓÀ» °¡Á¤ÇÏ¿© 10¹øÀÇ count¿¡¼­´Â Á¦¿ÜµÈ 3¹øÀÇ Ãß°¡ ±âȸ¸¦ ÁÖ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù. # pwd2.pl $count = 0; for ( 1..10 ) { print "Type password ($_): "; chop( $password = ); if( $password eq "hack" ) { print "Right !\n"; last; } chop($password); if( $password eq "hac" ) { last if( $count++ >= 3 ); print "Almost correct. try more\n"; redo; } } print "End.\n"; À§ÀÇ ¿¹Á¦¸¦ ½ÇÇà½ÃŰ¸é¼­ ¾ÏÈ£¸¦ ¹¯´Â ÇÁ·ÒÇÁÆ®¿¡ a, err, shitµî ¾²Àßµ¥¾ø´Â ¾ÏÈ£¸¦ ¸î¹ø ÀÔ·ÂÇÏ´Ù°¡ haco, hact, haccµî hack°ú ³¡ ±ÛÀÚ ÇÑÀÚ¸¸ ´Ù¸¥ ¾ÏÈ£ ¸¦ 2¹øÂë ÀÔ·ÂÇØ º¸½Ê½Ã¿À. ±×·¯¸é redo°¡ ÀÖ´Â ºí·ÏÀÌ ½ÇÇàµÇ¸é¼­ for(1..10) ¿¡¼­ $_°¡ ´õ ÀÌ»ó Ä¿ÁöÁö ¾Ê´Â°ÍÀ» ¾Ë ¼ö ÀÕ½À´Ï´Ù. ÀÌÇØ°¡ °¡½ÃÁÒ ? 17. ¹®ÀÚ¿­ÀÇ ÀÏÄ¡ ================= ¹®ÀÚ¿­ÀÇ ÀÏÄ¡¿¡ ´ëÇÑ ¿¬»ê½ÄÀº ¾î¶² ¹®ÀÚ¿­¿¡ ´Ù¸¥ ´Ü¾î³ª ±¸¹®, ¹®Àå µîÀÌ µé ¾îÀÖ´ÂÁö ¾Ë±âÀ§ÇØ »ç¿ëÇÕ´Ï´Ù. ±×·¯·Á¸é =~ ¿¬»êÀÚ¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ±×¸®°í ãÀ» ´Ü¾î³ª ±¸¹®, ¹®ÀåÁÖÀ§¿¡´Â µû¿ÈÇ¥ ´ë½Å /·Î µÑ·¯½Ô´Ï´Ù. µû¿ÈÇ¥µµ ¾ÈµÇ´Â °Ç ¾Æ´ÏÁö¸¸ ÀÏ´ÜÀº »ç¼±(/)À¸·Î Çϴ°ÍÀ» ½À°üµé¿© ÁֽʽÿÀ. ³ªÁß¿¡ perlop.txt¸¦ º¸½Ã¸é ¾î¶² ºÎÈ£¸¦ ¾î¶»°Ô »ç¿ëÇÒ ¼ö ÀÖ´ÂÁö ¾Ë ¼ö ÀÖ½À´Ï´Ù. # contain.pl $long = "Tell me what\'s up."; # '´Â Ư¼öÇÑ ¹®ÀÚÀ̹ǷΠ\¸¦ »ç¿ë # ÇÏ¿© excape½Ãŵ´Ï´Ù. if( $long =~ /hat/ ) # º¸¼ÌÁÒ ? ¹®ÀÚ¿­ $long¿¡ hatÀ̶ó´Â ¹®ÀÚ¿­ { # ÀÌ µé¾îÀÖ´ÂÁö ½ÃÇèÇÕ´Ï´Ù. print "Yes, it contains \"hat\".\n"; # "µµ escape½ÃÄÑ¾ß µË´Ï´Ù. } else { print "No, it does not.\n"; } hat´Â what¿¡ Æ÷ÇԵǾî ÀÖÁö¿ä. ÀÏÄ¡¿¡ ´ëÇØ À̾߱âÇÏ·Á¸é ¹Ýµå½Ã ±ÔÁ¤¾î¹ý(Regular Expression, ¾àÀÚ·Î RE)¿¡ ´ëÇÏ¿© ¤°í ³Ñ¾î°¡¾ß¸¸ ÇÕ´Ï´Ù. ******( ±ÔÁ¤¾î¹ý ? )****** »ç½Ç Àú´Â À¯´Ð½º ÂÊ¿¡¼­ Regular ExpressionÀ» ¹«¾î¶ó°í ¹ø¿ªÇÏ´ÂÁö Àß ¸ð¸£°Ú ½À´Ï´Ù. ¾î¶² À¯´Ð½º ÀÔ¹®¼­¿¡¼­´Â ±×³É "·¹±Ö¶ó ÀͽºÇÁ·¹¼Ç"À̶ó°í Çß´õ±º¿ä. Á¦ »ý°¢À¸·Î ±ÔÁ¤¾î¹ýÀ̶ó ÇÏ¸é ¸ÂÀ» µí ½Í¾î ±×·¸°Ô ÇÏ¿´½À´Ï´Ù. Ȥ½Ã ´Ù¸¥ »ý°¢À̳ª ¿Ã¹Ù¸¥ À̸§À» ¾Ë°í °è½Ã´Â ºÐÀÌ °è½Ã¸é Á¤Á¤ÇÏ¿© ÁÖ½Ã¸é °í¸¿°Ú½À´Ï´Ù. ************************** ¾î¶² ¹®ÀÚ¿­ ¼Ó¿¡ Ưº°ÇÑ ³»¿ëÀÇ ´Ü¾î ¶Ç´Â ªÀº ±¸¹®ÀÌ ÀÖ´ÂÁö °Ë»çÇÏ´Â ±â´É Àº À¢¸¸ÇÑ ÆíÁý±â¸é ´Ù °¡Áö°í ÀÖÁö¿ä. ±×·¯³ª ÀÌ·¯ÇÑ Ã£±â ±â´ÉÀº ´ë°³ ÇѰ谡 À־ ¾î¶°ÇÑ 'ÆÐÅÏ'ÀÇ ±¸¹®À» ã´Âµ¥´Â Á¶±Ý ¹®Á¦°¡ ÀÖÁö¿ä. ¿¹¸¦ µé¾î "hello world"¿Í "hello my world"¸¦ °°Àº ÆÐÅÏÀ¸·Î »ý°¢Çϰí ã¾Æ¾ß ÇÑ´Ù¸é ã±â¿¡ ¾Ö·Î¸¦ ´À³¢Áö ¾Ê°Ú½À´Ï±î ?. ÀÌ·¯ÇÑ ÆÐÅÏÀ» ÇÑ ¹®ÀÚ¿­ ¾È¿¡ ¼³Á¤½ÃÄÑ ÁÖ´Â °ÍÀÌ ¹Ù·Î ±ÔÁ¤¾î¹ý, Regular Expression, RE ÀÔ´Ï´Ù. ÇѰ¡Áö¾¿ º¾½Ã´Ù. . Á¡ÀÌ º¸À̼¼¿ä ? À̰ÍÀº µü ÇÑ ÀÚ(¿µ¹® ÇÑ ÀÚ)ÀÔ´Ï´Ù. ¾î¶² ±ÛÀÚµµ ÁÁ½À´Ï ´Ù. ´Ü °³Ç๮ÀÚÀÎ "\n"¸¸Àº Á¦¿ÜÀÔ´Ï´Ù. ±×·¡¼­ À§ÀÇ ¿¹Á¦ contain.pl¿¡¼­ /hat/´ë½Å¿¡ /h.t/¸¦ ÇØµµ °°Àº °á°ú°¡ Ãâ·ÂµË´Ï´Ù. /h.t/Àº hat, hot, hut, hit, µîµî¿¡ ´Ù ÇØ´çµÇÁö¸¸ heat, heart, hoot, ht µîÀº ¾Æ´Õ´Ï´Ù. ±â¾ïÇϽʽà ¿À. "°³Ç๮ÀÚ¸¦ Á¦¿ÜÇÑ ÀÓÀÇÀÇ ÇÑ ±ÛÀÚ." ¹ØÁÙ Ä¡¼¼¿ä. ±×¸®°í °£´ÜÇÑ ¿¹Á¦·Î ½ÇÇèÇØ º¸¼¼¿ä. Ȥ½Ã Á¦°¡ À߸øÇßÀ¸¸é Á¦°Ô »ñ´ëÁúÀÌ¶óµµ ÇØ¾ß ÇÒ °Í ¾Æ´Õ´Ï±î ? * º°, asterisk ÀÔ´Ï´Ù. µµ½º¿¡¼­ ¸¹ÀÌ º¸½Å ¿ÍÀϵå Ä«µå·Î ¾²ÀÌ´Â ¹®ÀÚÁÒ. Á¡(.)Àº ÇÑ ±ÛÀÚ¸¦ ´ë½ÅÇÒ ¼ö ÀÖÁö¸¸ º°(*)Àº 0 ¶Ç´Â ±× ÀÌ»óÀÇ ¾î¶² ¼öÀÇ ¹®ÀÚ ·Îµµ ´ëÄ¡µÉ ¼ö ÀÖ½À´Ï´Ù. ¶Ç ´Ù¸¥ Á¡Àº Á¡(.)Àº ±× ÀÚü·Î ¾î¶² ¹®ÀÚ¸¦ ´ë½ÅÇÏ Áö¸¸ º°(*)Àº ±× ¾Õ¿¡ ¾î¶² ¹®ÀÚ°¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. Áï o*p Çϸé 0 ¶Ç´Â ¸î °³ÀÇ o¿Í p°¡ ÀÖ´Â °ÍÀ» ¸»Çϸç p, op, oop, oooooooop µîÀÌ ¸ðµÎ ÇØ´çµË´Ï´Ù. ±×·¯ ³ª * ¾Õ¿¡ o¿Í °°Àº ¾î¶² ¹®ÀÚ°¡ ÀÖ¾î¾ß ÇÏ°í ¸¸ÀÏ $str =~ /*p/¶ó°í Çϸé perl.exe´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ ³»°í ½ÇÇàÀ» ½ÃŰÁö ¾Ê½À´Ï´Ù. # contain2.pl $long = "I wrote it at the beginning."; print $long, "\n"; if( $long =~ /h*at/ ) # /*at/, /a.t/µµ ½ÇÇèÇØ º¸¼¼¿ä. { print "Yes, it contains.\n"; } else { print "No, it does not.\n"; } °á°ú°¡ ¾î¶»°Ô ³ª¿Ã±î¿ä ? + º¸Å±â Ç¥ÀÔ´Ï´Ù. *°¡ 0 ¶Ç´Â ¸î °³ÀÎ µ¥¿¡ ¹ÝÇØ +´Â '1' ¶Ç´Â ¸î °³ ÀÔ´Ï ´Ù. ±×·¡¼­ o+p´Â op, oop, ooooop¿Í ÀÏÄ¡µÇÁö¸¸ p¿¡´Â ÀÏÄ¡µÇÁö ¾Ê½À´Ï´Ù. ? ¹°À½Ç¥ÀÔ´Ï´Ù. 0 ¶Ç´Â 1°³ÀÇ ¹®ÀÚ¿¡ ÀÏÄ¡µË´Ï´Ù. Áï o?p´Â p ¾Æ´Ï¸é opÀÔ´Ï ´Ù. +³ª ? ¸ðµÎ ±× ¾Õ¿¡ ¾î¶² ¹®ÀÚ°¡ ÀÖ¾î¾ß ÇÏ´Â °ÍÀº *°ú µ¿ÀÏÇÕ´Ï´Ù. ÁÖÀÇÇϼ¼ ¿ä. Àͼ÷ÇØÁö´Â ¹æ¹ýÀº ÀÚ²Ù ÇØº¸´Â ¼ö¹Û¿¡ ¾ø½À´Ï´Ù. ÀÚ²Ù ¸¸µé¾î º¸¼¼¿ä. ¹®ÀÚ¿­ÀÇ ¾îµð¿¡³ª ÀÖ´Â ±¸¹®ÀÌ ¾Æ´Ï¶ó ¹®ÀÚ¿­ÀÇ Ã³À½À̳ª ¸Ç ³¡¿¡ ÀÖ´Â °Í¸¸À» ãÀ¸·Á ÇÒ ¶§¿¡´Â ¾î¶»°Ô ÇÒ±î¿ä ? ^´Â ¹®ÀÚ¿­ÀÇ ¸Ç óÀ½À», $´Â ¸Ç ³¡À» ³ªÅ¸³À´Ï´Ù. $´Â ÀϹݺ¯¼öÀÇ $¿Í È¥µ¿µÉ ¿°·Á°¡ ¾øÀ¸´Ï ½Å°æ ¾²Áö ¸¶½Ê½Ã¿À. »ý°¢ÇÒ ¼ö ÀÖ´Â °ÍµéÀ» Àû¾îº¸µµ·Ï ÇÏÁö¿ä. t.e the, tie, toe, µîµî. settle¿¡µµ Æ÷ÇԵǾî ÀÖÁÒ. ^t.e À§¿Í °°À¸³ª ¹®ÀÚ¿­/ÁÙÀÇ Ã³À½¿¡ ÀÖÀ» °æ¿ì. settleÀº ¾ÈµÊ. ^.e he, me, regard µîÀÌ ¹®ÀÚ¿­/ÁÙÀÇ Ã³À½¿¡ ÀÖÀ» °æ¿ì. t.e$ toe, necktie µîÀ¸·Î ³¡³ª´Â ¹®ÀÚ¿­. s*he she, he, ssssssssshe, the, tshe s+he she, sshe, sssssshe, tshe µî. he, the´Â ¾È µÊ. s?he he ¶Ç´Â she. ^s?he$ "he" ¶Ç´Â "she". ÇÑ ÁÙ¿¡ ÀÌ µÎ°¡Áö¸¸ÀÌ Çã¿ëµË´Ï´Ù. .* °³Ç๮ÀÚ¸¦ Á¦¿ÜÇÑ ¸ðµç ±ÛÀÚµé. ^$ ºó ÁÙ/¹®ÀÚ¿­. ¶Ç µå¸®´Â ÀܼҸ®: ¹é°ßÀÌ ºÒ¿© ÀÏÇà. Á¶±Ý ´õ ½É¿ÀÇÑ ¼±ÅÃÀ» ÇØ º¼±î¿ä ? []·Î ½×¿©ÀÖ´Â ±ÛÀÚµéÀº ¸î ÀÚ°¡ µÇµç ´Ü ÇÑ ±ÛÀÚ¸¸À» ´ëº¯Çϸç, Æ÷ÇÔµÈ ¸ðµç ±ÛÀÚ Áß ¾î¶² ±ÛÀÚ¶óµµ ÀÖÀ¸¸é ÀÏÄ¡µÇ´Â °ÍÀ¸·Î ÀÎÁ¤µË´Ï´Ù. []¸¦ character class¶ó°í ÇÏ´õ±º¿ä. [st]he she ¶Ç´Â the. ^[st]he ¹®ÀÚ¿­ÀÇ Ã³À½¿¡ ÀÖ´Â she ¶Ç´Â the. [a-z] ¼Ò¹®ÀÚ ÇÑ ÀÚ. '-'´Â betweenÀÇ Àǹ̷Π¹üÀ§¸¦ ³ªÅ¸³¿. [a-zA-Z] ¼Ò¹®ÀÚ ¶Ç´Â ´ë¹®ÀÚ ÇÑ ÀÚ. [0-9] ½ÊÁø¼ö ÇÑ ÀÚ. [-0-9] '-'ºÎÈ£¿Í ½ÊÁø¼ö Áß ÇÑ ÀÚ. »©±â ºÎÈ£¸¦ »ç¿ëÇÏ·Á¸é ¸Ç ¾Õ¿¡ µÎ¾î¾ß¸¸ ÇÕ´Ï´Ù. ¾È ±×·¯¸é ¹üÀ§¸¦ ³ªÅ¸³»´Â '-'ºÎÈ£¿Í Çò°¥¸®°ÚÁÒ ? [0-9a-fA-F] ½ÊÀ°Áø¼ö ÇÑ ÀÚ. h[eao]y hey, hay, hoy. ^h[eao]y ¹®ÀÚ¿­ÀÇ Ã¹¸Ó¸®¿¡ ÀÖ´Â hey, hay, hoy. h[^eao]y hey, hay, hoy¸¦ "Á¦¿ÜÇÑ" /h.y/. Áï hiy, hfy, huy µî. ¹®ÀÚŬ·¡½º(character class)¾È¿¡¼­ÀÇ ^ ºÎÈ£´Â not ¶Ç´Â except¸¦ ÀǹÌÇÕ´Ï´Ù. [^a-z] ¼Ò¹®ÀÚ »©°í ¸ðµÎ ´Ù. [a-z]+ ¼Ò¹®ÀÚ°¡ ÇÑ ÀÚ ¶Ç´Â ÁÙÁÙÀÌ ÀÖ´Â °Íµé. w, kdfns, oie, jfowjdngjwerh µîµî. [tT][hH][eE] the, thE, tHe, tHE, The, ThE, THe, THE, µî. ¸¶Áö¸· ¿¹´Â ´ë¼Ò¹®ÀÚ ±¸ºÐ¾ø´Â the¸¦ ã±âÀ§ÇÑ ¹æ¹ýÀÇ Çϳª¿´½À´Ï´Ù. ±×·±µ¥ Á¶±Ý ´õ Æí¸®ÇÑ ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. $long = "The world of mine !"; if( $long =~ /World/i ) { print "Yes\n"; } # ÀÌ»óÇÑ°Ô ÀÖÁö¿ä ? else { print "No.\n"; } ÀÌ ¿¹¿¡¼­´Â yes°¡ Ãâ·ÂµË´Ï´Ù. /World/µÚ¿¡ i ÀÚ Çϳª°¡ ¸Å¹Ìó·³ ºÙ¾î ÀÖÁÒ ? "ignore case"ÀÇ Ã¹ ±ÛÀÚ·Î ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ÇÏÁö ¸»¶õ ¶æÀÔ´Ï´Ù. HTMLÀÇ ÅÂ±× µéÀº ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê½À´Ï´Ù. ±×·± °æ¿ì °ú
À» µ¿½Ã¿¡ ã À¸·Á¸é ¾ÆÁÖ À¯¿ëÇÑ ¼±ÅÃÀÌ µÇ°ÚÁö¿ä. ¾Õ¿¡¼­ $_¶ó´Â Ư¼ö º¯¼ö¿¡ ´ëÇÏ¿© À̾߱â ÇÑ ÀûÀÌ ÀÖ½À´Ï´Ù. ã¾Æº¸¼¼¿ä. °ÅÁþ ¸» ¾Æ´Õ´Ï´Ù. ´Ù½Ã ÇÑ ¹ø ¸»¾¸µå¸®¸é ¾î¶² º¯¼ö°¡ »ç¿ëµÇ¾îÁ®¾ß ÇÒ Àå¼Ò¿¡ ¾Æ¹« º¯¼öµµ º¸ÀÌÁö ¾ÊÀ¸¸é PERLÀº $_°¡ Àִ°ÍÀ¸·Î »ý°¢ÇÕ´Ï´Ù ±×·¡¼­ À§ÀÇ °£´ÜÇÑ ¿¹Á¦´Â ÀÌ·¸°Ô °íÃĵµ °°Àº °á°ú¸¦ º¸¿©ÁÝ´Ï´Ù. $_ = "The world of mine !"; if( /World/i ) { print "Yes\n"; } # $_ =~ ... ·Î »ý°¢ÇÕ´Ï´Ù. else { print "No.\n"; } ¶Ç ´Ù¸¥ Àç¹ÌÀִ Ư¼ö º¯¼ö¸¦ µÎ°³ ´õ ¼Ò°³ÇÏÁö¿ä. Á¤½Å »ç³ª¿ì½Ã¸é ±×³É ±×·± °Ô ÀÖ±¸³ª ÇÏ°í¸¸ ³Ñ¾î°¡¼¼¿ä. À§ÀÇ ¿¹Á¦¸¦ ÀÌ·¸°Ô °íÃĺ¾½Ã´Ù. $_ = "The world of mine !"; if( /World/i ) { print "Yes\n"; } # $_ =~ ... ·Î »ý°¢ÇÕ´Ï´Ù. else { print "No.\n"; } print "Fore : $`\nAft : $'\n"; # $`, $' ?? À§ÀÇ ¿¹Á¦¸¦ Á÷Á¢ ½ÇÇàÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù Ãâ·ÂµÇ´Â °á°ú´Â Yes Fore : The # The µÚ¿¡ °ø¹éÀÌ Çϳª ÀÖ½À´Ï´Ù. Aft : is mine ! ÀÔ´Ï´Ù. ¾î¶² ¹®ÀÚ¿­ÀÇ ÀÏÄ¡¸¦ ½ÇÇèÇØ º» ÈÄ °á°ú°¡ ¼º°øÀûÀ̸é $`¿¡´Â ãÀº ¹®±¸ÀÇ ¹Ù ·Î ¾ÕºÎºÐÀÌ, $'´Â µÞºÎºÐÀÌ ÇÒ´çµÇ¾î ÀÖ½À´Ï´Ù. My name is Jongpil My name is Inhyon My name is Jungkwang My name is Kwanghoon My name is Hyongku ÀÚ, À§ÀÇ °¢ ÁÙ¿¡¼­ À̸§¸¸ µû·Î ÀúÀåÇÒ ¼ö ÀÖ°Ú½À´Ï±î ? $'¸¦ »ç¿ëÇÏ¸é µÇ°ÚÁö ¿ä ? ¹®ÀÚ¿­ÀÇ ÀÏÄ¡¿¡ ´ëÇØ¼­´Â ÀÌ Á¤µµ¸¸ ¾Æ¼Åµµ À¢¸¸ÇÑ ÀÏÀº ÇÏ½Ç ¼ö ÀÖÀ¸½Ç °Ì´Ï ´Ù. ´ÙÀ½Àº ±×Àú Âü°í »ï¾Æ¼­ º¸½Ã°í ´õ ¾Ë°í ½ÍÀ¸½Å ºÐÀº ¿µ¹® Âü°í¼­ (perlre.txt)¸¦ Çѹø º¸¼¼¿ä. --- ¼öÁ÷ ¸·´ë, | ´Â or ºÎÈ£À̰í, ()´Â ±ÛÀÚµéÀÇ ±×·ìÀÔ´Ï´Ù. --- /clean|dirty/ clean ¶Ç´Â dirty (eg|le)gs eggs ¶Ç´Â legs ba(na)+ bana, banana, bananananana *** ()¸¦ »ç¿ëÇÏ´Â ±×·ìÈ­µÈ ÆÐÅÏÀº Çѱۿ¡ Àû¿ëÇÒ ¶§ À¯¿ëÇϸ®¶ó »ý°¢µË ´Ï´Ù. ´ÙÀ½ ¿¹¹®À» º¸½ÃÁö¿ä. $long = "´Ò¸®¸® ´Ò¸®¸® ´Ò¸®¸®¾ß"; if ( $long = /´Ò(¸®)+/ ) { print "´Ò¸®¸®¾ß ´Ï³ª³ë.\n"; } else { print "¾î¿½Ã±¸¸®.\n"; } --- Ư¼ö¹®Àڵ鵵 À¯¿ëÇÕ´Ï´Ù. --- \n °³Ç๮ÀÚ. \t ÅÇ. \w ¹®ÀÚ ¶Ç´Â ¼ýÀÚ. [a-zA-Z0-9]¿Í °°½À´Ï´Ù. \W \w°¡ ¾Æ´Ñ °Í. [^a-zA-Z0-9]¿Í °°½À´Ï´Ù. \d ½ÊÁø¼ö. [0-9]¿Í °°½À´Ï´Ù. \D ½ÊÁø¼ö ¾Æ´Ñ °Í. [^0-9]¿Í °°½À´Ï´Ù. \s °ø¹é¹®ÀÚ. space, ÅÇ, °³Ç๮ÀÚ µî. \S °ø¹é¹®ÀÚ ¾Æ´Ñ °Í. \b ´Ü¾îÀÇ °æ°è(boundary). [ ]ÀÇ ¹Ù±ù¿¡¼­¸¸ »ç¿ë. "the green grass of home"ÀÇ \bthe\b, \bgreen\b, \bgrass\b, \bof\b, \bhome\b. \bthe\b¿Í \bhome\bµµ Æ÷ÇԵʿ¡ À¯ÀÇÇϼ¼¿ä. \B ´Ü¾îÀÇ °æ°è°¡ ¾Æ´Ñ °Í. --- {}´Â ¹®ÀÚ, ±×·ìÀÇ °³¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. --- ba(na){2} banana¸¸ ÇØ´ç. ba(na){1,2} bana, banana¸¸ ÇØ´ç. ba(na){2,5} banana, bananana, banananana, bananananana¸¸ ÇØ´ç. o{2,4}p oop, ooop, oooop. Áß¿ä: À§¿¡¼­ ¾²¿´´ø Ư¼öÇÑ ¹®ÀÚµé ^$|[]()\/{}*.?+ µîÀ» ±× ÀÚü·Î »ç¿ëÇÒ ¶§ ´Â ±× ¾Õ¿¡ \¸¦ ºÙ¿© ÁÖ¼¼¿ä. \^ \$ \| \[ \] \( \) \\ \/ \{ \} \* \. \? \+ Á¤¸» Áß¿äÇÑ °ÍÀº Á÷Á¢ °£´ÜÇÑ ÇÁ·Î±×·¥À» ¸¸µé¾î¼­ ½ÃÇèÇØ º¸´Â °ÍÀÔ´Ï´Ù. ¸î Àå µÇÁöµµ ¾Ê´Â ¼³¸í¿¡ Æ÷±âÇØ¼­´Â Á¤¸» ¾×ƼºêÇÑ È¨ÆäÀÌÁö¸¦ ¸¸µé ¼ö ¾ø°Ú Áö¿ä ? ±Û½ê ¾ÆÀÌÅ¥ µÎ ÀÚ¸´¼öµµ ÀÌÇØ¸¦ Çϰí ÀÖÀݾƿä... 18. ¹®ÀÚ¿­ÀÇ Ä¡È¯ - Substitution, Translation ============================================== ġȯÀº ÀÏÄ¡ÀÇ ÀÀ¿ëÀ¸·Î »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. ¿¬»êÀÚµµ =~¸¦ »ç¿ëÇÏ°í ¹®ÀÚ¸¦ µÑ ·¯½Î´Â ºÎÈ£µµ /ÀÔ´Ï´Ù. ġȯÀ» À§ÇÏ¿© s///¶ó´Â ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. ¹®ÀåÀÇ ±¸Á¶´Â "µÚÀû°Å¸± ¹®ÀÚ¿­" =~ s/ãÀ» ¹®ÀÚ¿­/¹Ù²Ü ¹®ÀÚ¿­/¿É¼Ç; ¹®ÀÚ¿­À» ã¾Æ¼­ ġȯÀÌ µÇ¾úÀ» ¶§ ġȯ½ÃŲ ¹®ÀÚ¿­ÀÇ ¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù. ġȯÀÌ Çϳªµµ µÇÁö ¾Ê¾Ò´Ù¸é 0À» ¸®ÅÏÇϰÚÁÒ. # subst.pl $_ = "Where is my baby, Oh Baby !"; if( $count = ( s/baby/lover/ ) ) # $_ =~ s/.... ·Î ÀÎÁ¤µË´Ï´Ù. { print "Replaced $count time(s).\n \"$_\"\n"; } else { print "Failed.\n"; } print "Fore : $`\nAft : $'\n"; À§ ¿¹Á¦ÀÇ °á°ú¸¦ ¿¹»óÇØ º¸½Ã°í Á÷Á¢ ½ÇÇèÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù. $countÀÇ °ª¸¸ Âü°í·Î ¸»¾¸µå¸®¸é 1ÀÔ´Ï´Ù. µÚ¿¡´Â ´ë¹®ÀÚ·Î ½ÃÀÛÇÏ´Â Baby¶ó¼­ ±×·±°¡ ? ¾Æ, ¹ú½á ¾Æ¼Ì±º¿ä. Á¦°¡ s/baby/lover/i¶ó°í ¸»ÇÏ·Á ÇÑ´Ù´Â °ÍÀ» !!! Çѹø ÇØ º¼±î¿ä ? ƽ, Ƽµñ, ƽƽƽ ÆÜ ! (ÆÜÀº enterŰ Ä¡´Â ¼Ò¸®.) ¾Æ´Ï ??! °á°ú°¡ ÀÌ»óÇÏ´Ù !! ¿Ö µÚÀÇ Baby´Â ±×³É ÀÖÁö ? ÀüÁ¾ÇÊÀÌ °¡¸¸ ³öµÎ Áö ¾Ê°Ú´Ù eC.... >-( Àá±ñ¿ä ! ... ¾Æ ! ÇÑ °¡Áö ´õ ÀÖ¾ú±º¿ä. g, global substitution, Àü¿ª ġȯÀÌ ¶ó´Â ¿É¼ÇÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é ¸Ç óÀ½¿¡ ¹ß°ßµÇ´Â ¹®±¸¸¸ ġȯÀÌ µÇ°í ±× µÚ´Â ´õ ÀÌ»ó µÚÀû°Å¸®Áö ¾Ê´Â°ÍÀÔ´Ï´Ù. ÇØ º¸½ÃÁÒ ..s/baby/lover/gi.. ÆÜ ! ... À½, ¿ª½Ã ±×·¸Áö¿ä ? ±×¸®°í ¸¶Áö¸· ÁÙÀÇ print "Fore : $`\nAft : $'\n";ÀÇ °á°úµµ ´«¿©°Ü º¸¼¼ ¿ä. ¹®ÀÚ¿­ÀÇ ÀÏÄ¡¿¡¼­ »ìÆìº¸¾Ò´ø ¸ðµç ±ÔÁ¤¾î¹ý(Regular Expression)ÀÌ ¿©±â¼­µµ Àû¿ëÀÌ µË´Ï´Ù. °£´ÜÇÑ ¿¹Á¦ Çϳª¸¸ ÇØ º¸°í ºÎ¿¬ÇÏÁö ¾Ê°Ú½À´Ï´Ù. # banana.pl $_ = <$stufile" ) || die "Can\'t open $stufile"; # ÆÄÀÏÀ» ¾²±â ¸ðµå(>)·Î ¿­¾ú½À´Ï´Ù. foreach ( keys %students ) # keys ÇÔ¼ö´Â hashÀÇ keyµé¸¸À» ¸ð¾Æ¼­ { # ¹è¿­·Î ¸¸µé¾î returnÇÑ´Ù°í Çß½À´Ï´Ù. $stud[0] = $_; # $_ ±â¾ïÇϽÃÁÒ ? $stud[1] = $students{$_}; $stud[2] = $studyear{$_}; $string = join( ':', @stud ); # : ºÎÈ£·Î joinÇÕ´Ï´Ù. $string .= "\n"; # ID¿Í Çгâ, ±×¸®°í »ç¶÷ À̸§¿¡ # µé¾î°¥¸® ¾ø´Â ºÎÈ£´Ï±î¿ä. print Hstufile $string; # ÇÚµéÀ» ÅëÇØ¼­ ÆÄÀÏ¿¡ ÇÁ¸°Æ®ÇÕ´Ï´Ù. } close Hstufile; # ²À, ´ÝÀ¾½Ã´Ù. split ÇÔ¼ö¸¦ ±â¾ïÇϽʴϱî ? joinÇÔ¼öÀÇ ¿ª°³³äÀÌÁö¿ä. Áö±Ý ±×°ÍÀ» ´Ù½Ã ¼³¸í Çϸé Á¦°¡ ¿©·¯ºÐÀ» ¹«½ÃÇϴ°ÍÀÌ µÇ°ÚÁö¿ä ? ±×·¯³ª join¿¡ ¦ÀÌ ¾ø¾î¼­ ¼­¿î Çϴϱî ÇѸ¶µð¸¸ ÇÒ²²¿ä. splitÇÔ¼ö´Â ¾î¶² ÆÐÅÏÀ» ÀÌ¿ëÇÏ¿© ¹®ÀÚ¿­À» ¹è¿­·Î ³ª´©¾î ÀúÀåÇÕ´Ï´Ù. ±Ã±ÝÇÏ ½Ã¸é ÀúÀÇ Perl À̾߱â-3ÀÇ ¸Ç µÞºÎºÐÀ» ÂüÁ¶Çϼ¼¿ä. Perl¿¡ °üÇÑ ¹®¼­µéÀ» º¸¸é ÀÚÁÖ ³ª¿À´Â À̾߱Ⱑ ÀÖ½À´Ï´Ù. "¹æ¹ýÀº ÇÑ °¡Áö ¸¸Àº ¾Æ´Ï´Ù"´Â ¸»ÀÔ´Ï´Ù. ¿©·¯°¡Áö ¹æ¹ýÀ» °í·ÁÇØ¼­ ¹®Á¦¸¦ Ç®¾î ³ª°¡½Ê½Ã¿À. ¾î¶² ¹®Á¦´øÁö... ******( ÀϹݺ¯¼öÀÇ ±âÀÌÇÑ ÀçÁÖ )****** ¸Ç óÀ½¿¡ º¯¼ö¿¡ °üÇÑ À̾߱⸦ Çϸ鼭 »©³õ°í °£ À̾߱Ⱑ ÀÖ´Â°Í °°½À´Ï´Ù. ÀϹݺ¯¼ö¿¡´Â ¹®ÀÚ¿Í ¼ýÀÚ¸¦ ¹ø°¥¾Æ ÇÒ´çÇÒ ¼ö ÀÖ´Ù°í Çß½À´Ï´Ù. ±×·±µ¥ ÀÌ Àç ¹ÌÀÖ´Â ÀçÁÖ ¸»°íµµ PerlÀÇ º¯¼ö´Â ¹®ÀÚ¿­·Î ÀúÀåµÇ¾îÀÖ´Â ¼ýÀÚÇüÅÂÀÇ º¯¼ö¸¦ °è»ê½Ä¿¡±îÁö Àû¿ë½Ãų ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ±×·¡¼­, $a = "5"; $b = 3; $c = $a + $b; print "$c\n"; ¶ó°íÇØµµ ±º¼Ò¸®¾øÀÌ 8ÀÚ°¡ ³ª¿Â´Ù´Â °ÍÀÌÁÒ. Æí¸®ÇÑ ¹æ¹ý ¾Æ´Õ´Ï±î ? *************************************** 21. Hash (Associative Array, À⵿»ç´Ï) ====================================== Hash´Â º»·¡ Associative array¶ó°í Çϴ°ǵ¥ ¹®ÀÚ´ë·Î ¸»Çϸé "¿¬»ó¹è¿­"ÀÌ µÇ °ÚÁÒ. Áï, ÂüÁ¶¹øÈ£°¡ ¾Æ´Ñ Ű¿öµå¿¡¼­ ¾î¶² °ªÀ» ¿¬»óÇØ ³»´Â ¹æ½ÄÀ» »ý°¢ÇϽà ¸é µË´Ï´Ù. ±×·¯³ª ±×°ÍÀº »ç½Ç ¿¬»óÀÇ °á°ú´Â ¾Æ´ÏÁö¿ä. ´ÜÁö ±×·¸°Ô º¸ÀÌ´Â °ÍÀÌÁö¿ä. ±×·¡¼­ Hash¶ó°í ÇÏ´ÂÁöµµ ¸ð¸¨´Ï´Ù. ¿¬»ó¹è¿­ÀÌ ¾Æ´Ï¶ó À⵿»ç´Ï¶ó ´Â... HashÀÇ °¢ ¿ä¼Òµµ ¹è¿­ÀÇ ¿ä¼Òó·³ ÀϹݺ¯¼ö(scalar)ÀÔ´Ï´Ù. # score.pl $scores{"engl"} = 75; # hashÀÇ °¢ ¿ä¼ÒÀÇ °ª¿¡´Â ´ç¿¬È÷ $scores{"math"} = 80; # $°¡ ºÙ½À´Ï´Ù. ÀϹݺ¯¼öÀ̴ϱî¿ä. $scores{"geo"} = 65; foreach ( keys( %scores ) ) # ¿©±â¼­´Â hash±× ÀÚü¸¦ °¡¸®Å°¹Ç·Î { # % ºÎÈ£°¡ ºÙ½À´Ï´Ù. print "$_ : ", $scores{"$_"}, "\n"; } keys ÇÔ¼ö´Â hashÀÇ keyµé¸¸À» ¸ð¾Æ¼­ ¹è¿­·Î ¸¸µé¾î returnÇÑ´Ù°í Çß½À´Ï´Ù. ±×·¯¸é °ªµé¸¸À» ¸ð¾Æ¼­ ¹è¿­·Î ¸¸µé¾î ÁÖ´Â ÇÔ¼ö´Â ¾øÀ»±î¿ä ? ¹°·Ð ÀÖ½À´Ï´Ù. # test.pl $scores{"engl"} = 75; $scores{"math"} = 80; $scores{"geo"} = 65; @keys = keys %scores; @values = values %scores; # ¹Ù·Î ¿©±âÀÖ±º¿ä ! while( $#keys >= 0 ) # À¸À× ??? popÀ» Çѹø¾¿ ÇÒ ¶§¸¶´Ù ¸¶Áö¸· { # ¿ä¼ÒÀÇ ÂüÁ¶¹øÈ£´Â 1¾¿ ÀÛ¾ÆÁý´Ï´Ù. ´ç¿¬ÇÏÁÒ ? print pop( @keys ), " : ", pop( @values ), "\n"; } # ¿ä À§ÀÇ popµéÀ» shift·Î ¹Ù²Ù¾î¼­ ½ÇÇàÇØ º¸¼¼¿ä. ºÎ¿¬ÇÏÁö ¾Ê¾Æµµ ÀÌÇØ°¡ µÇ½ÃÁÒ ? ¾Æ¹«¸®Çصµ ÀÌÇØ°¡ ¾ÈµÇ½Ã¸é ¸ÞÀÏÁÖ¼¼¿ä. ******( °ýÈ£µéÀº ¾îµð¿¡ ? )****** ¶È°°Àº ÇÔ¼ö¸¦ »ç¿ëÇϸ鼭µµ ¾îµð¿¡´Â °ýÈ£¸¦ ¾º¿ì°í ¾îµð¿¡´Â ½Ã¿øÇÏ°Ô ¹þ°Ü³õ °í . . . Perl¿¡¼­´Â °ýÈ£¸¦ ¼±ÅÃÀûÀ¸·Î »ç¿ëÇÕ´Ï´Ù. ±»ÀÌ ¾ø¾îµµ È¥µ¿µÇÁö ¾Ê ´Â´Ù¸é ÇÔ¼öÀÇ ÀÎÀڵ鵵 °ýÈ£·Î µÑµÑ ¸» ÀÌÀ¯°¡ ¾ø½À´Ï´Ù. ±×·¡¼­ print 8 + 3, "\n"; print( 8 + 3, "\n"); ´Â °°Àº °á°ú¸¦ Ãâ·ÂÇÕ´Ï´Ù. ´Ü, print ( 8 + 3 ), "\n"; Àº ¾à°£ ÀÌ»óÇÑ ¸ð¾çÀÌ µË´Ï´Ù. Áï, "\n"ÀÌ Ãâ·ÂµÇÁö ¾Ê½À´Ï´Ù. PerlÀº , ¿¬»êÀÚ¸¦ º¸¸é ,ÀÇ ¿ÞÂÊÀ» ¸ÕÀú °è»êÇÕ´Ï´Ù(evaluating). ±×·¡¼­ $a = 5, $a = 4, $a = 3; ÀÇ °æ¿ì $a¿¡´Â °á±¹ 3ÀÌ ÀúÀåµÇ´Â °ÍÀÔ´Ï´Ù. ¶Ç ÇÔ¼ö¿Í ±×¿¡ µû¶ó¿À´Â ()ºÎÈ£ (List operator)´Â Àüü·Î¼­ ÇϳªÀÇ TermÀ» ÀÌ·ç¸ç TermÀº ±× ¾î¶² ¿¬»êÀÚº¸´Ù Å« ¿ì¼±¼øÀ§¸¦ °®±â ¶§¹®¿¡ À§ÀÇ printÇÔ¼öÀÇ ¿¹¿¡¼­´Â print ( 8 + 3 )ÀÌ ¸ÕÀú °è»êµÇ°í ±× ´ÙÀ½¿¡ "\n"ÀÌ °è»êµË´Ï´Ù. ±× °è»êÀÇ °á°ú·Î ³ªÅ¸³ª´Â °ÍÀº ¾Æ¹« °Íµµ ¾øÁö¸¸¿ä. (°è»êµÈ´Ù´Â Àǹ̸¦ calculationÀ¸·Î¸¸ »ý°¢ÇÏÁö ¸¶½Ã°í, evaluation, manipulation µîÀ¸·Îµµ »ý°¢ÇϽʽÿÀ.) ´ÙÀ½ ¸í·É¹®µéÀ» ½ÇÇàÇØ º¸½Ã°í Ãâ·Â¹°ÀÇ ÀÇ¹Ì¿Í ¿Ö ±×·± °á°ú°¡ ³ª¿Ô´ÂÁö¸¦ »ý °¢ÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù. print "Fore\n", print "Aft\n"; print ( 5 + 3 ) * 5, "\n"; ¾î¶² °á°ú¸¦ ½±°Ô ¿¹ÃøÇÒ ¼ö ¾øÀ¸½Ã´Â °æ¿ì¿¡ °¡Àå ÈǸ¢ÇÑ ÇØ°á¹æ¹ýÀº °£´ÜÇÑ ¿¹Á¦¸¦ ¸¸µé¾î ½ÇÇàÇØ º¸´Â °ÍÀÔ´Ï´Ù. ********************************** Hash¸¦ ¹è¿­¿¡, ¹è¿­À» ´Ù½Ã Hash¿¡ ÀúÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. Á¦ ¼ø¼­¸¦ ÁöÄѼ­ 㠾Ƶé¾î °¡Áö¿ä. # test.pl $scores{"engl "} = 75; $scores{"math "} = 80; $scores{"geo "} = 65; $scores{"music"} = 98; @arr = %scores; print "\@arr : @arr\n"; $count = ( $#arr + 1 ) / 2; print "Number of data in %scores : $count\n"; %scores2 = @arr; foreach ( keys %scores2 ) { print "$_ : ", $scores2{"$_"}, "\n"; } keys¿Í valuesÇÔ¼ö¿Ü¿¡ each¶ó´Â ÇÔ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ ÇÔ¼ö´Â hashÀÇ key¿Í value¸¦ ¦Áö¾î ÇÑ ¹è¿­ ¾È¿¡ ³Ö¾îÁÝ´Ï´Ù. eachÇÔ¼ö°¡ Çѹø¾¿ ºÒ·ÁÁú¶§¸¶´Ù hashÀÇ ¿ä¼Ò°¡ ¼ø¼­´ë·Î ¸®Åϵǰí, ¸ðµç ¿ä¼Ò°¡ ´Ù ¸®ÅÏ µÇ°í³ª¸é ±× ´ÙÀ½Àº NULL ¹è¿­ÀÌ µÇµ¹·ÁÁý´Ï´Ù. ±×·¯¹Ç·Î ¾Æ·¡ÀÇ whileÀÇ Á¶°Ç¹®Àº Á¦´ë·Î ÀÛµ¿µË´Ï ´Ù. # each.pl %scores = ( "engl", 75, "math", 80, "geo", 65, "music", 98 ); while( ($key, $value) = each %scores ) { print "$key :\t$value\n"; } Á¶±Ý ±ä ¿¹Á¦¸¦À» Çѹø º¸½Ã°í hashÀ̾߱⸦ ¸¶Ä¡°Ú½À´Ï´Ù. Çлý °³ÀÎÀÇ µ¥ÀÌŸ¿Í Çаú ¼ºÀûÀÌ °¢°¢ÀÇ ÆÄÀÏ¿¡ ´ÙÀ½°ú °°ÀÌ ÀúÀåµÇ¾î ÀÖ½À´Ï ´Ù. ÀÚ·áÆÄÀÏÀº ±×Àú Æò¹üÇÑ ÅØ½ºÆ® ÆÄÀÏÀÔ´Ï´Ù. ù¹øÂ° ÆÄÀÏÀº stufileÀÌ°í °¢ ÁÙÀº ÇÑ ÇлýÀÇ id, À̸§, ÇгâÀÌ : ·Î ºÐ¸®µÇ¾î ÀÖ½À´Ï´Ù. 123:Jongpil:2 246:Inhyon:1 357:Jungkwang:3 212:Kwanghoon:2 ¶Ç µÎ¹øÂ° ÆÄÀÏÀº scoresÀÌ°í °¢ ÁÙÀº ÇлýÀÇ id, Çаú¹øÈ£, ½ÃÇèÁ¡¼ö°¡ °ø¹éÀ¸ ·Î ºÐ¸®µÇ¾î ÀÖ½À´Ï´Ù. 123 1 87 246 1 76 123 3 77 212 2 99 246 3 58 357 2 69 123 2 84 357 3 97 212 1 74 246 2 98 212 3 88 ÀÌ ÀÚ·áÆÄÀϵéÀÇ ³»¿ëÀ» ´ÙÀ½°ú °°ÀÌ Ãâ·ÂÇÏ·Á ÇÕ´Ï´Ù. ID Name year 1 2 3 Totals 123 Jongpil 2 87 84 77 248 212 Kwanghoon 2 74 99 88 261 246 Inhyon 1 76 98 58 232 357 Jungkwang 3 0 69 97 166 Total 237 350 320 907 ¸Ç À­ÁÙÀÇ 1, 2, 3Àº Çаú ¹øÈ£ÀÔ´Ï´Ù. Á¶±Ý º¹ÀâÇØ º¸ÀÏÁö ¸ô¶óµµ ¿¹Á¦¸¦ ÀÚ¼¼È÷ º¸½Ã¸é Å©°Ô ¾î·Á¿ï °Íµµ ¾ø½À´Ï´Ù. ´ÙÀ½Àº ¿¹Á¦ÀÔ´Ï´Ù. # test.pl $stufile = 'stufile'; $scorefile = 'scores'; $maxnamelength = 0; # ÀÌ µÎÁÙÀº ²À ÇÊ¿äÇÑ °ÍÀº ¾Æ´ÏÁö¸¸ $maxexamno = 0; # ¸íÈ®È÷ ÇØÁÖ±â À§ÇØ ³Ö¾ú½À´Ï´Ù. open( Hstufile, "<$stufile" ) || die "Can\'t open $stufile.\n"; # ¿­¾î¶ó, ¾Æ´Ï¸é Á×¾î¶ó. while( ) # $_ = °ú °°½À´Ï´Ù. { chop; # ¸Ç ³¡ÀÇ °³Ç๮ÀÚ¸¦ Àß¶ó ³À´Ï´Ù. last if( length( $_ ) < 3 ); # 3Àº Å« Àǹ̴ ¾øÁö¸¸ 3 ÀÚµµ # ¾ÈµÇ¸é ÀÚ·á°¡ ¾Æ´Ñ°ÍÀ¸·Î °£ÁÖÇÕ´Ï´Ù. ( $stuid, $name, $year ) = split( ':', $_ ); $students{$stuid} = $name; # hash $studyear{$stuid} = $year; # hash if( $maxnamelength < length( $name ) ) # °¡Àå ±ä À̸§¿¡ ¸Â { $maxnamelength = length( $name ); } # Ãß¾î Ãâ·Â. } close Hstufile; # ´Ý´Â°Í ±â¾ïÇϽÃÁÒ ? open( Hscorefile, "<$scorefile" ) || die "Can\'t open $scorefile.\n"; while( ) { chop; last if( length( $_ ) < 3 ); ( $stuid, $examno, $score ) = split; $scores{ $stuid, $examno } = $score; # ۰¡ 2°³ÀÔ´Ï´Ù. # $stuid´Â Áߺ¹µÇ¹Ç·Î... if( $examno > $maxexamno ) # Çаú°¡ ¸î°³ÀÎÁö ¼À. { $maxexamno = $examno; } } close Hscorefile; printf( "%3s %-${maxnamelength}s %4s", "ID", "Name", "year" ); # ${maxnamelength}ó·³ { }¸¦ »ç¿ëÇÏ¿© µÑ·¯ ½Ô´Ï´Ù. # ±×·¸Áö ¾ÊÀ¸¸é $maxnamelengths ·Î ÀνĵǰÚÁÒ. (sÀÚ º¸ÀÌÁÒ?) foreach ( 1..$maxexamno ) { printf( "%4d", $_ ); } printf( "%10s\n\n", 'Totals' ); foreach $stuid ( sort ( keys %students ) ) # sortÇÔ¼ö´Â ¹è¿­³»ÀÇ { # °¢ ¿ä¼Ò°£ÀÇ ¹®ÀÚ¿­ ºñ±³·Î Àüü # ¹è¿­À» Á¤·ÄÇÑ ¹è¿­À» ¸®ÅÏÇÕ´Ï´Ù. printf( "%3d %-${maxnamelength}s %4d", $stuid, $students{$stuid}, $studyear{$stuid} ); $total = 0; foreach $examno (1..$maxexamno) { printf( "%4d", $scores{ $stuid, $examno } ); $total += $scores{ $stuid, $examno }; $examtotal{ $examno } += $scores{ $stuid, $examno }; } printf( "%10d\n", $total ); } printf( "%3s %-${maxnamelength}s %4s", '', "Total", '' ); $total = 0; foreach $examno (1..$maxexamno) { printf( "%4d", $examtotal{ $examno } ); $total += $examtotal{ $examno }; } printf( "%10d\n\n", $total ); ÀÌ·¸°Ô º¸¸é µ¥ÀÌŸº£À̽º ÇÁ·Î±×·¥µµ ¸ø ¸¸µé°Ç ¾ø°Ú±º¿ä. »ç½Ç Perl¿¡´Â database¿Í ¿¬µ¿Çϱâ À§ÇÑ ÇÔ¼öµéÀÌ ¸¹ÀÌ ÀÖ½À´Ï´Ù. ±×¸®°í Internet¿¡ º¸¸é ¸¹ Àº database¸¦ À§ÇÑ Perl ¶óÀ̺귯¸®³ª ½ºÅ©¸³Æ®µéÀÌ ¸¹ÀÌ ÀÖ½À´Ï´Ù. ÀÌ ±ÛÀ» º¸½Ã´Â ¾î´ÀºÐ Áß¿¡´Â °ð ±×·± ¶óÀ̺귯¸®¸¦ ¸¸µé¾î¼­ ¿ì¸®³ª¶ó¿Í ±×¸®°í Àü ¼¼ °è¿¡ ³ª´©¾î ÁÖ½Ç ºÐµµ °è½Ã¸®¶ó´Â »ý°¢µµ µå³×¿ä. ******( ${maxnamelength} ? )****** ÀϹݺ¯¼öÀÇ À̸§ ÁÖÀ§¿¡ {}·Î µÑ·¯½Ñ »õ·Î¿î ¸ð½ÀÀÌ Á» ÀÌ»óÇϱº¿ä. ±×·¯³ª ±× ³»¿ëÀº $maxnamelength¿Í Çϳªµµ ´Ù¸¦ ¹Ù°¡ ¾ø½À´Ï´Ù. ´ÜÁö ¿¹Á¦¿¡¼­ ±× µÚ¿¡ ÀÖ´Â s¿ÍÀÇ Á¢ÃËÀ¸·Î $maxnamelengths°¡ µÇ¾î ÇØ¼®ÀÌ ¾ÈµÇ´Â °ÍÀ» ¸·±âÀ§ÇÏ¿© {}ºÎÈ£°¡ »ç¿ëµÇ´Â °ÍÀÔ´Ï´Ù. ÀÌ·± °æ¿ì´Â ¶Ç ÀÖ½À´Ï´Ù. $fruit = "apple"; print "I have five $fruits\n"; ??? print "I have five ${fruit}s\n"; !!! À§ÀÇ °æ¿ìó·³ º¯¼ö¿Í ¾î¶² ¹®ÀÚ¸¦ ¹Ù·Î ¿¬°áÇÏ¿© »ç¿ëÇÒ ¶§¿¡´Â ¹Ýµå½Ã {}ºÎÈ£ ·Î º¯¼öÀ̸§À» µÑ·¯½Î¾ß ÇÑ´Ù´Â »ç½ÇÀ» ±â¾ïÇϽñ⠹ٶø´Ï´Ù. *********************************** 22. »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö - Subroutine ================================== ¿©±â¼­´Â °£´ÜÇÑ ¼Ò°³¸¸ Çϵµ·Ï ÇϰڽÀ´Ï´Ù. ÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖ´Ù¸é ÇÔ¼ö´Â ¿Ö ¸ø¸¸µé°Ú¼ö ? SubroutineÀº ±âÁ¸ÀÇ ÇÔ¼öµé·Î´Â ÇÒ ¼ö ¾ø´Â ÀÏÀ» ¹Ýº¹ÀûÀ¸·Î Çϰųª, Àüü ÇÁ ·Î±×·¥ ¿î¿µ»óÀÇ È¿À²À» Áõ´ë½Ã۱â À§ÇØ, ±×¸®°í ¸ÚÀ» ³»°í ½ÍÀ» ¶§ ¸¸µì´Ï´Ù. (¿Ö ¸Ú³»¸é ¾ÈµÇ¿ì ?) SubroutineÀº ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÕ´Ï´Ù. sub mysubroutine { print "Just print a simple message.\n"; } À§ÀÇ SubroutineÀº ±×´ÙÁö À¯¿ëÇÑ ÇÁ·Î±×·¥Àº ¾Æ´Ñ°Í °°±º¿ä. ÇÏ¿©°£ &mysubroutine; # & ¸¦ ºÙ¿©¼­ ºÎ¸¨´Ï´Ù. À̶ó°í Çϸé, Just print a simple message.\nÀ» È­¸é¿¡ Ãâ·ÂÇÕ´Ï´Ù. PerlÀÇ subroutineÀ» Á¤ÀÇÇÒ ¶§´Â ÀμöÀÇ Á¾·ù³ª °³¼ö µîÀ» Ưº°È÷ Á¤ÇÏÁö ¾Ê½À ´Ï´Ù. ±×Àú »ç¿ëÇÒ »ÓÀÔ´Ï´Ù. Àμö´Â @_¶ó´Â Ư¼öÇÑ ¹è¿­·Î Àü´ÞµË´Ï´Ù. $_¿Í´Â º°°³ÀÇ Á¸ÀçÀÎ °Í ¾Æ½ÃÁö¿ä ? ´«ÀÇ Âø°¢ÀÏ »ÓÀÔ´Ï´Ù. °¢ subroutineÀº Á¦ °¢±â ÀÚ½ÅÀÇ @_¸¦ °¡Áö°í ÀÖÀ¸¹Ç·Î subroutine¿¡¼­ ´Ù¸¥ subroutineÀ» ºÎ¸¦ ¶§ °ø¿¬ÇÑ °ÆÁ¤Àº ÇÏÁö ¾ÊÀ¸¼Åµµ µË´Ï ´Ù. ´ÙÀ½À» Çѹø ÇØ º¸¼¼¿ä. # param.pl sub args { print "@_\n"; } sub bigargs { # ( "Shut", "up,", "please !" )¶ó´Â ¹è¿­ÀÌ ³Ñ¾î¿É´Ï´Ù &args( "Hello", "there", "?" ); print "@_\n"; } &bigargs( "Shut", "up,", "please !" ); °¢°¢ÀÇ @_°¡ Á¦ ¿ªÇÒÀ» ´Ù Çϴ°ÍÀÌ º¸À̽ÃÁÒ ? @_µµ ¹è¿­À̹ǷΠ$_[0], $_[1], $#_ µî ¶ÇÇÑ Á¦´ë·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. SubroutineÀº ¸¶Áö¸·À¸·Î µµÃâµÈ °ªÀ» ¸®ÅÏÇϰųª returnÀ̶ó´Â ÇÔ¼ö·Î ¸íÈ®ÇÏ °Ô Ç¥½ÃÇÏ´Â °ªÀ» ¸®ÅÏÇÕ´Ï´Ù. # return.pl $max = &max( 10, 5 ); print "$max\n"; $max = &max( 8, 15 ); print "$max\n"; sub max { if( $_[0] > $_[1] ) { return $_[0]; } $_[1]; } Subroutine¹Û¿¡¼­ÀÇ º¯¼öµéÀº Ưº°È÷ ¸í½ÃÇÏÁö ¾Ê´Â ÇÑ subroutineÀÇ ¾ÈÂÊ¿¡¼­ µµ º¼ ¼ö ÀÖ½À´Ï´Ù. º¼ ¼ö ÀÖ´Ù´Â ¸»Àº º¯È­½ÃÄѼ­´Â ¾ÊµÇ´Â º¯¼öÀÇ °ªÀ» '½Ç¼ö ·Î ÀÎÇÏ¿©' º¯È­ ½Ãų ¼ö ÀÖ´Ù´Â ¸»ÀÔ´Ï´Ù. # oooops.pl $dum = "Very very important data"; $max = &max( 10, 5 ); print "10, 5 - $max\n"; $max = &max( 9, 14 ); print "9, 14 - $max\n"; print "$dum\n"; # oooops !! sub max { $dum = ( $_[0] > $_[1] ) ? $_[0] : $_[1]; } ÀÌ·± È¿°ú¸¦ ÀϺη¯ ±â´ëÇÑ °æ¿ì°¡ ¾Æ´Ï¶ó¸é, ±×¸®°í º¯¼öÀ̸§À» ±âÇÊÄÚ ±×·¸°Ô ÇÏ°í ½Í°Å³ª, Ȥ ´Ù¸¥ »ç¶÷ÀÌ ¶óÀ̺귯¸®·Î ¾²·Á´Â°ÍÀ» ¿¹»óÇÏ¿© Ȥ ÀÖÀ»Áöµµ ¸ð¸£´Â ºÒ¹Ì½º·¯¿î ÀÏÀ» ¹Ì¿¬¿¡ ¹æÁöÇÏ°í ½ÍÀ» ¶§´Â localÀ̶ó´Â ¹üÀ§º¯°æÀÚ (modifier)¸¦ »ç¿ëÇÕ´Ï´Ù. ******( ¿¬»êÀÚ ?: )****** À§ÀÇ ¿¹Á¦Áß¿¡¼­ subroutine¿¡ »ç¿ëµÈ ¿¬»êÀÚ ?:´Â Á¶°ÇÀÇ Âü, °ÅÁþ¿¡ µû¶ó ¼­ ·Î ´Ù¸¥ °ªÀ» ¸®ÅÏÇÏ´Â ¿¬»êÀÚÀÔ´Ï´Ù. Çü½ÄÀº (Á¶°Ç½Ä) ? ÂüÀ϶§ÀÇ_°ª : °ÅÁþÀ϶§ÀÇ_°ª ÀÔ´Ï´Ù. À§ÀÇ ¿¹Á¦ÀÇ °æ¿ì ( $_[0] > $_[1] )°¡ ÂüÀÏ °æ¿ì $_[0]À», °ÅÁþÀÏ °æ ¿ì $_[1]À» ¸®ÅÏÇÔÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½Àº À§ÀÇ ¿¹Á¦¸¦ ¾à°£¸¸ º¯ÇüÇÑ °ÍÀÔ´Ï´Ù. # local.pl $dum = "Very very important data"; $max = &max( 10, 5 ); print "10, 5 - $max\n"; $max = &max( 9, 14 ); print "9, 14 - $max\n"; print "$dum\n"; # Bueno ! No problemo ! sub max { local( $dum ) = ( $_[0] > $_[1] ) ? $_[0] : $_[1]; # ÀÌ $dumÀº ¹Ù±ùÀÇ $dum°ú´Â ´Ù¸¨´Ï´Ù. } ½ÇÇèÇØ º¸¼ÌÁö¿ä ? localÀº º¯¼ö¸¦ 'Áö¿ªÈ­'ÇϹǷνá subroutine ¾ÈÆÆÀÇ º¯¼öÀ̸§ÀÌ °°´õ¶óµµ ½ÇÁ¦ ÀÇ 'Á¸Àç'´Â ´Ù¸£°Ô Á¶Á¤ÇÕ´Ï´Ù. ´ëÇ¥ÀûÀÎ Áö¿ªº¯¼ö°¡ ¹Ù·Î @_, $_[0], $_[1], $_[2] .... ÀÔ´Ï´Ù. À§¿¡¼­ º¸¼ÌµíÀÌ °¢°¢ÀÇ subroutine¸¶´Ù ¼­·Î ´Ù¸¥ @_¸¦ °¡ Áö°í ÀÖ¾ú´ø°ÍÀ» ±â¾ïÇϽǰ̴ϴÙ. # ´ÙÀ½¹ø¿¡´Â ¸î°¡Áö À¯¿ëÇÑ ¿¹Á¦µéÀ» ¸¸µé¾î¼­ ½ÇÇèÇϸ鼭 Áö±Ý±îÁöÀÇ À̾߱âµéÀ» # Çѹø Á¤¸®ÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. # °¨»çÇÕ´Ï´Ù. # # Àü Á¾ ÇÊ ¿Ã¸². #