À̸íÇå °æ¿µ ½ºÄð
HOME | BUSINESS | TECH | CULTURE | LIST | @emhdent
[ÆÞ] ÆÞÀ» ÀÌ¿ëÇÑ ÆÄÀϰú µð·ºÅ丮 °ü¸®
ÆÞ¿¡¼­ÀÇ ÆÄÀϰú µð·ºÅ丮
À̸íÇå (Æ®À§ÅÍ) [ 2002-9-2 ]

ÆÄÀÏ ÇÚµé (File Handle)

¾Õ ±Û¿¡¼­ »ç¿ëÀÚ ÀÔ·Â󸮿¡ °üÇØ¼­ ¾Ë¾Æº» ÀûÀÌ ÀÖ½À´Ï´Ù. Ȥ½Ã ±× ±ÛÀ» ¾È ÀÐÀ¸½Å ºÐÀº Áö±Ý ÀÐ°í ¿À½Ã±â ¹Ù¶ø´Ï´Ù.

±× ±Û¿¡ º¸½Ã¸é < > »çÀÌ¿¡ ÆÄÀÏÇÚµéÀ» ³ÖÀ¸¸é ÆÄÀÏÀ» ÇÑ ÁÙ ÀоîµéÀδٴ ¸»¾¸À» µå·È¾ú´Âµ¥¿ä. ÆÄÀÏÇÚµéÀÌ ¹ºÁö¸¦ ¿ì¼± ¾Ë¾Æº¾½Ã´Ù.


Llama book ¿¡ º¸¸é, ÆÄÀÏÇÚµéÀº "¹Ù±ù ¼¼°è¿Í ÆÞ ÇÁ·Î¼¼½º »çÀÌÀÇ I/O connection" À̶ó°í µÇ¾î ÀÖ½À´Ï´Ù. ¹Ù±ù ¼¼°è ¶ó´Â °ÍÀº Çϵåµð½ºÅ©µî¿¡ ¹°¸®ÀûÀ¸·Î ÀúÀåµÈ ÆÄÀÏÀ» ¾ê±âÇÕ´Ï´Ù. ±× ÆÄÀϰú ÆÞ ÇÁ·Î±×·¥³»ÀÇ ÇÁ·Î¼¼½º »çÀÌ¿¡ µ¥ÀÌŸ¸¦ ³Ö°í »¬ ¼ö ÀÖ´Â (I/O) ÇϳªÀÇ ¿¬°áÀ» ¸¸µé ¼ö°¡ Àִµ¥ ÀÌ°É ÆÄÀÏ ÇÚµéÀ̶ó°í ÇÕ´Ï´Ù. ¸»·Î ÇÏ¸é º¹ÀâÇÏ´Ï±î ¿¹¸¦ µé¾î¼­ º¸ÁÒ.

open MYFILE, "logfile.txt";

À§ÀÇ ÄÚµå´Â open() À̶ó´Â ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ logfile.txt ¶ó´Â ÆÄÀÏÀ» MYFILE À̶ó´Â ÆÄÀÏÇÚµé·Î ¿©´Â ÄÚµå ÀÔ´Ï´Ù. ÀÌ·¸°Ô ¿¬ ´ÙÀ½, ÆÞ ÇÁ·Î±×·¥³»¿¡¼­ ÀÌ MYFILE ÆÄÀÏÇÚµéÀ» ÀÌ¿ëÇØ¼­ logfile.txt ÆÄÀÏÀÇ ³»¿ë¹°À» Àоî¿Â´Ù°Å³ª (Input), logfile.txt ¿¡ ´Ù¸¥ µ¥ÀÌŸ¸¦ ±â·Ï (Output) ÇÒ ¼ö°¡ ÀÖ´Â °ÍÀÔ´Ï´Ù. ¹®ÀÚ±×´ë·Î ½ÇÁ¦ ÆÄÀÏÀ» ÆÞ ÇÁ·Î±×·¥³»¿¡¼­ ´Ù·ç±â À§ÇØ »ç¿ëÇÏ´Â 'ÇÚµé'ÀÎ °ÍÀÔ´Ï´Ù.

ÆÄÀÏÇÚµéÀ» ¸¸µå´Â ¹æ¹ýÀº, ´Ù¸¥ ÆÞ º¯¼ö¿Í ´Þ¸® ¾Õ¿¡ ºÙ´Â ¹®ÀÚ ($, @, %) °¡ ¾ø´Ù´Â Á¡¸¸ ÁöÄÑÁÖ½Ã¸é µË´Ï´Ù. ±×·±µ¥ ÆÄÀÏÇÚµéÀº °ü¿ëÀûÀ¸·Î ´ë¹®ÀÚ¸¸ »ç¿ëÇÏ´Â °ÍÀÌ º¸ÅëÀÔ´Ï´Ù. ¼Ò¹®ÀÚ·Î ¾µ °æ¿ì ÆÞÀÇ ¿¹¾à¾î (reserved word) ¿Í Ãæµ¹ÇÒ °¡´É¼ºÀÌ Àֱ⵵ Çϰí, ¶Ç ´ë¹®ÀÚ·Î ¾²¸é µÎµå·¯Á® º¸À̱⠶§¹®À̶ó°í ÇÕ´Ï´Ù.

À§ÀÇ Äڵ忡¼­ º¸½Å °Íó·³ ÆÞ¿¡¼­ ÆÄÀÏÇÚµéÀ» ÀÌ¿ëÇØ¼­ ÆÄÀÏÀ» ¿­¶§ »ç¿ëÇÏ´Â ÇÔ¼ö°¡open() ÇÔ¼ö ÀÔ´Ï´Ù. ÀÌ·± Çü½ÄÀÌÁÒ.

open FILEHANDLE, "filename"  

À̶§ ÆÄÀÏÀ» ¿©´Â ¸ðµå(mode) °¡ Å©°Ô 3 °¡Áö Á¤µµ°¡ (ÀÚ¼¼È÷ µé¾î°¡¸é ´õ ¸¹½À´Ï´Ù¸¸) ÀÖ½À´Ï´Ù.


open FH1, "myfile";
open FH2, ">newfile";
open FH3, ">>logfile";

ù¹øÂ° °ÍÀº myfile À» 'Àбâ¸ðµå' ·Î ¿¬°ÍÀÔ´Ï´Ù.
¹®ÀÚ±×´ë·Î myfile À̶ó´Â ÆÄÀÏÀÇ ³»¿ë¹°À» ÀоîµéÀ̱â À§Çؼ­ myfile À» FH1 À¸·Î ¿¬ °ÍÀÌÁÒ.
ÆÄÀÏÀ» Àд °ÍÀº ¹Ø¿¡¼­ ´õ ÀÚ¼¼È÷ ¾ê±âµå¸®°Ú½À´Ï´Ù.

±× ´ÙÀ½, ÆÄÀÏ À̸§ ¾Õ¿¡ > À» ÇÑ °³ ºÙÀÎ °ÍÀº '¾²±â¸ðµå' Áß µ¤¾î¾²±â (overwrite) ¸ðµå ÀÔ´Ï´Ù. ÆÄÀÏ¿¡ ¾î¶² ³»¿ëÀ» ±â·ÏÇϱâ À§ÇØ ¿­¶§ »ç¿ëÇÏ´Â °ÍÀε¥ Ư¡ÀûÀ¸·Î ±âÁ¸ÀÇ ³»¿ëÀ» ´Ù ¾ø¾Ö¹ö¸®°í »õ·Î¿î ³»¿ëÀ¸·Î µ¤¾î¾²±â¸¦ ÇÏ´Â ¸ðµå ÀÔ´Ï´Ù. À§ ÄÚµåÀÇ °æ¿ì, newfile À̶õ ÆÄÀÏÀÌ ¾ø´Ù¸é »õ·Î ¸¸µé¾î¼­, ÀÖ´Ù¸é ±âÁ¸ÀÇ ³»¿ëÀ» Áö¿ì°í µ¤¾î¾²±â¸¦ ÇÏ°Ô µÇ´Â °ÍÀÔ´Ï´Ù.

¼¼¹øÂ°, ÆÄÀÏÀ̸§ ¾Õ¿¡ >> À» ºÙÀ̸é À̰ÍÀº ¾²±â¸ðµå Áß ºÙ¿©¾²±â (append) ¸ðµå·Î ¿©´Â °ÍÀÔ´Ï´Ù.ÆÄÀÏÀ» ¿­¾î¼­ ±âÁ¸ÀÇ ³»¿ë ³¡¿¡ »õ·Î¿î ³»¿ëÀ» µ¡ºÙÀ϶§ »ç¿ëÇÏ´Â ¸ðµå ÀÔ´Ï´Ù. À§ÀÇ ÄÚµåÀÇ °æ¿ì, logfile À̶ó´Â ÆÄÀÏÀÌ ¾ø´Ù¸é »õ·Î ¸¸µé¾î¼­, ÀÖ´Ù¸é ¿­¾î¼­, ±âÁ¸ÀÇ ³»¿ëÀº ±×´ë·Î µÎ°í ±âÁ¸ ³»¿ë ³¡¿¡ »õ·Î¿î ³»¿ëÀ» µ¡ºÙÀÏ ¼ö ÀÖ°Ô ÁغñÇÏ´Â °ÍÀÔ´Ï´Ù.

ÆÄÀÏÀÇ Àб⠾²±â¿¡ ´ëÇØ¼­´Â ¹Ø¿¡¼­ ÀÚ¼¼È÷ ´Ù·ç°Ô µÇ±¸¿ä, ¿ì¼±Àº À§¿¡¼­ º¸½Å °Íó·³ ÆÄÀÏÀ» 3°¡Áö ¹æ½ÄÀ¸·Î ¿­¾î¼­ Áغñ¸¦ ÇÒ ¼ö ÀÖ´Ù°í ÆÄ¾ÇÇÏ½Ã¸é µË´Ï´Ù.

open() Àº ÆÞ ÇÁ·Î±×·¥ÀÌ Á÷Á¢ ÆÄÀÏÀ» ¿©´Â °ÍÀÌ ¾Æ´Ï¶ó ¿î¿µÃ¼°è¿¡ ÆÄÀÏÀ» ¿­¾î´Þ¶ó°í ¿äû¸¸ ÇÏ´Â ÇÔ¼ö ÀÔ´Ï´Ù. µû¶ó¼­ ¿î¿µÃ¼°è¿¡¼­ ÆÄÀÏÀ» ¿­ ¼ö ¾ø´Ù°í ÆÇ´ÜµÇ´Â °æ¿ì (ÆÛ¹Ì¼ÇÀÌ ¾È¸Â´ÙµçÁö, ¿äûÇÑ ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´ÙµçÁö) open() Àº °ÅÁþ (0) À» ¸®ÅÏÇÏ°Ô µË´Ï´Ù. À̶§ ÆÄÀÏÀ» ¿©´Âµ¥ ½ÇÆÐÇÑ °ÍÀÌ µå·¯³ª´Â °æ¿ìµµ ÀÖÁö¸¸ µå·¯³ªÁö ¾Ê´Â °æ¿ìµµ ÀÖ±¸¿ä. ±× °æ¿ì ÇÁ·Î±×·¥Àº ºÐ¸íÈ÷ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Âµ¥ Ưº°ÇÑ ¿¡·¯ ¸Þ¾¾Áö´Â ¾ø´Â ±×·± ÀÏÀÌ »ý±æ ¼ö ÀÖÀ» °Ì´Ï´Ù. µû¶ó¼­ ¿ì¸®´Â open() ÀÌ ¼º°øÇß´ÂÁö ¾Æ´ÑÁö¸¦ È®ÀÎÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ±×·²¶§ »ç¿ëÇÏ´Â °ÍÀÌ ¹Ù·Î die() ÀÔ´Ï´Ù.
ÀÌ·¸°Ô »ç¿ëÇÕ´Ï´Ù.


 open (HANDLE, "myfile") or die ("Can't open myfile: $!"); idiom
 open (HANDLE , "myfile") || die "Can't open myfile: $!";
 

µÎ°³´Â °ÅÀÇ °°Àº °ÍÀ¸·Î »ý°¢ÇÏ½Ã¸é µË´Ï´Ù. Àд ±×´ë·ÎÁÒ. myfile À̶ó´Â ÆÄÀÏÀ» HANDLE À̶ó´Â ÆÄÀÏÇÚµéÀ» ÀÌ¿ëÇØ¼­ Àбâ¸ðµå·Î ¿­¾î¶ó, ¸¸¾à ¿­Áö ¸øÇϸé Can't open myfile.. À̶ó´Â ¸Þ¾¾Áö¸¦ º¸¿©Áָ鼭 ÇÁ·Î±×·¥ ½ÇÇàÀ» Áß´ÜÇÑ´Ù.´Â ÀÇ¹Ì ÀÔ´Ï´Ù. $! Àº ¿¡·¯ÀÇ ±¸Ã¼Àû ³»¿ëÀ» ´ã°í ÀÖ´Â º¯¼ö ÀÔ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ ¿¡·¯ÀÇ ¿øÀÎÀ» º¸¿©ÁÖ´Â °ÍÀÌÁÒ. ½áÁ൵ µÇ°í ¾È½áÁ൵ µË´Ï´Ù.

ÆÄÀÏÇÚµéÀ» ¿¬ ´ÙÀ½¿¡ ¾î¶² ÀÛ¾÷À» ÇÏ°í ´ÝÀ» ¶§¿¡´Â close(FILEHANDLE) ¸¦ »ç¿ëÇÏ½Ã¸é µË´Ï´Ù. close() ´Â ²À ÇØ¾ß¸¸ ÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. Áï ÆÄÀÏÇÚµéÀÌ ´õ ÀÌ»ó ¿­·Á ÀÖÀ» Çʿ䰡 ¾øÀ¸¸é ÆÞÀÌ ¾Ë¾Æ¼­ ´ÝÁÒ. ÇÏÁö¸¸ ¾î¶² ÆÄÀÏÀ» µ¿½Ã¿¡ ¿©·¯°÷¿¡¼­ ¼öÁ¤À» ÇÏ´Â °ÍÀ» ó¸®ÇØÁÖ´Â ÆÄÀÏ Àá±×±â (file locking; ´ÙÀ½¿¡ ÀÚ¼¼È÷ ´Ù·ì´Ï´Ù) ¸¦ ÇÒ¶§ ÀÌ close() °¡ Ưº°ÇÑ Àǹ̸¦ °®°Ô µË´Ï´Ù. ÀÏ´ÜÀº ²À ´Ý¾ÆÁà¾ß ÇÏ´Â °ÍÀº ¾Æ´Ï´Ù Á¤µµ·Î¸¸ ¾Ë°í ³Ñ¾î°¡½Ã¸é µÉ°Í °°±º¿ä.

ÀÚ ÀÌÁ¦ ÆÄÀÏÀ» ¿­¾î¼­ ¾î¶² ÀÏÀ» ÇÒ ¼ö ÀÖ´ÂÁö Çϳª Çϳª ¾Ë¾Æº¸ÁÒ. ¸ÕÀú,

ÆÄÀÏ Àбâ

»ç¿ëÀÚ ÀԷ ó¸®¿¡¼­ °øºÎÇØº» °Í ó·³ Ç¥ÁØ ÀÔ·ÂÀ¸·ÎºÎÅÍ ÇÑ ÁÙÀ» Àоîµé¿©¼­ \n À» ¶¼¾î³»°í ¾î¶² º¯¼ö¿¡ ÀúÀåÇÏ´Â °ÍÀº,

chomp($line = <STDIN>);

ó·³ ÇÏ¸é µÈ´Ù°í Çß½À´Ï´Ù.
±×·¯¸é Ç¥ÁØÀÔ·ÂÀ¸·ÎºÎÅÍ ¿©·¯ ÁÙÀ» Àд °ÍÀº ¾î¶»°Ô µÉ±î¿ä?


 while(defined($line=<STDIN>)) {
 	print $line;
 }
 

defined ¶ó´Â °ÍÀº º¯¼ö¿¡ ¾î¶² °ªÀÌ ÇÒ´çµÇ¾î ÀÖÀ¸¸é 1 À» ¸®ÅÏÇÏ°í ±×·¸Áö ¾ÊÀ¸¸é 0 À» ¸®ÅÏÇÏ´Â ÇÔ¼öÀÔ´Ï´Ù.µû¶ó¼­ À§ÀÇ ÄÚµå´Â Ç¥ÁØÀÔ·ÂÀ¸·ÎºÎÅÍ ÇÑ ÁÙÀ» Àоîµé¿©¼­ $line ¿¡ ÇÒ´çÀ» ÇÒ ¼ö ÀÖ´Ù¸é (Áï ÀоîµéÀÏ ÁÙÀÌ ÀÖ´Ù¸é) while ·çÇÁ³»ÀÇ ±¸¹®À» ½ÇÇàÇÑ´Ù´Â Àǹ̰¡ µÇÁÒ. ¸¸¾à Ç¥ÁØÀÔ·ÂÀ¸·ÎºÎÅÍ ÀоîµéÀϰÍÀÌ ´õ ÀÌ»ó ¾ø´Ù¸é $line Àº undefined °¡ µÇ°í, while () Àº °ÅÁþÀÌ µÇ¾î¼­ while ·çÇÁ°¡ ³¡³ª´Â °ÍÀÔ´Ï´Ù.

±×·±µ¥ STDIN ÀÚ¸®¿¡ ÆÄÀÏÇÚµéÀ» ³ÖÀ» ¼ö°¡ ÀÖ´Ù°í ÇßÀó¾Æ¿ä. Áï ¾î¶² ÆÄÀÏÀ» ¿­¾î¼­ ±× ÆÄÀÏ¿¡ 'ÁÙ' ÀÌ ÀÖ´Â ÇÑÀº °è¼ÓÇØ¼­ ÀоîµéÀÏ ¼ö°¡ ÀÖ´Â °ÍÀÔ´Ï´Ù.
µû¶ó¼­ myfile.txt ¶ó´Â ÆÄÀÏÀ» ¿­¾î¼­ ±× ÆÄÀÏÀÇ ³»¿ëÀ» ±×´ë·Î ´Ù Ãâ·ÂÇØÁÖ´Â ÄÚµå´Â,


 open MYHANDLE, "myfile.txt";
 while(defined($line=<MYHANDLE>) {
 	print $line;
 }
 

ÀÌ µÉ °ÍÀÔ´Ï´Ù.

±×·±µ¥ ÀÌ·¸°Ô ÆÄÀÏÀ» ¿­¾î¼­ Àд ±â´ÉÀº ¸Å¿ì ¸Å¿ì ÀÚÁÖ »ç¿ëÇÏ´Â ±â´ÉÀ̱⠶§¹®¿¡, ÆÞ¿¡´Â ´ç¿¬È÷ °ü¿ëÀûÀ¸·Î ¾²ÀÌ´Â Ãà¾àÇü Äڵ尡 ÀÖ½À´Ï´Ù. ¹Ù·Î À̴̰ϴÙ.


 open MYHANDLE, "myfile.txt";
 while(<MYHANDLE>) { 
 	print $_;
 }
 

while() ¾È¿¡ ¹Ù·Î <FILEHANDLE> À» Áý¾î³ÖÀº °ÍÀÔ´Ï´Ù. À̰ÍÀ» Ç®¾î¼­ ¼³¸íÇØ º¸¸é, myfile.txt ¿¡ ÀоîµéÀÏ ³»¿ëÀÌ ÀÖ´Â ÇÑ <MYHANDLE>Àº ÂüÀϰÍÀ̰í, while ·çÇÁ³»ÀÇ ±¸¹®ÀÌ °è¼Ó ½ÇÇàÇÏ°Ô µË´Ï´Ù. À§ÀÇ °æ¿ì´Â ÆÄÀÏÇÚµé·ÎºÎÅÍ ÀоîµéÀÎ ÁÙÀ» ¸í½ÃÀûÀ¸·Î ¾î¶² º¯¼ö¿¡ ÇÒ´çÇÏÁö ¾Ê¾ÒÀ¸¹Ç·Î ÆÞÀÇ default variable ÀÎ $_ ¿¡ ´ã±â°Ô µÇ´Â °ÍÀ̱¸¿ä.

À§¿Í °°Àº Äڵ带 ÀÌ¿ëÇØ¼­ ÆÄÀÏÀ» Àбâ¸ðµå·Î ¿­°í, ±× ÆÄÀÏÀÇ °¢ ÁÙÀ» $_ À» ÅëÇØ¼­ ´Ù·ê ¼ö°¡ ÀÖ´Â °ÍÀÔ´Ï´Ù. ¾ÆÁÖ ÀÚÁÖ ¾²ÀÌ´Â °ÍÀ̹ǷΠ¿Ü¿öµÎ¸é ÁÁ½À´Ï´Ù. ¿©±â¼­ ³¡À̳Ä. ±×·¸´Ù¸é ÆÞÀÌ ¾Æ´ÏÁÒ.-_-;
ÇÑ ¹ø ´õ ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù.


 open MYHANDLE, "myfile.txt";
 print while (<MYHANDLE>);idiom
 

À§ ÄÚµå ¿ª½Ã myfile.txt ¶ó´Â ÆÄÀÏÀ» ¿­¾î¼­ ±× ³»¿ëÀ» Âß Ãâ·ÂÇØÁÖ´Â ÄÚµå ÀÔ´Ï´Ù. ÈξÀ °£´ÜÇÏÁÒ? °£´ÜÇÒ »Ó¸¸ ¾Æ´Ï¶ó ÀϹÝÀûÀÎ ¿µ¾î ¹®Àåó·³ ÀÚ¿¬½º·´°Ô ÀÐÈü´Ï´Ù. MYHANDLE À» Àоî¿Ã ¼ö ÀÖ´Â ÇÑÀº (while) ÇÁ¸°Æ® ÇØ¶ó. .

À§¿Í °°Àº ½ºÅ¸ÀÏÀÌ ´É¼÷ÇÑ ÆÞ ÄÚµù ½ºÅ¸ÀÏ ÀÔ´Ï´Ù.

ºñ½ÁÇÑ °ÍÀ¸·Î < > À» ¸®½ºÆ® ÄÁÅØ½ºÆ®¿¡¼­ »ç¿ëÇÑ °Íµµ ÀÖ½À´Ï´Ù.


 foreach (<FILEHANDLE>) {
 	print $_;
 }
 

¶Ç´Â,


 for $line (<FILEHANDLE>) {
 	print $line;
 }
 

for() ³ª foreach() ´Â °ýÈ£¾ÈÀ» ¸®½ºÆ®Ã³·³ ´Ù·ç´Â ¸®½ºÆ® ÄÁÅØ½ºÆ® ÀÔ´Ï´Ù. µû¶ó¼­ ù¹øÂ° ÄÚµå´Â FILEHANDLE À» ¸®½ºÆ® ÄÁÅØ½ºÆ®¿¡¼­ Àоîµé¿©¼­ °¢ ÁÙÀ» Ãâ·ÂÇØÁÖ´Â °ÍÀÔ´Ï´Ù. °á°úÀûÀ¸·Î´Â while ·çÇÁ¿Í °°À»Áö ¸ô¶óµµ ³»ºÎÀûÀ¸·Î´Â ´Ù¸¥ °ÍÀÌÁÒ. ¸®½ºÆ® ÄÁÅØ½ºÆ®¿¡¼­ ÀоîµéÀ϶§´Â FILEHANDLE ÀÌ °¡¸£Å°´Â ÆÄÀÏÀ» ¿ì¼± óÀ½ºÎÅÍ ³¡±îÁö ´Ù ÀоîµéÀÎ ´ÙÀ½¿¡ ÇÑ ÁÙ¾¿ ÇÑÁÙ¾¿ ·çÇÁ¸¦ µ¹¸®°Ô µË´Ï´Ù¸¸ while ÀÇ °æ¿ì´Â ÇÑ ÁÙ Àо ·çÇÁ³» ±¸¹®À» ½ÇÇàÇϰí, ±× ´ÙÀ½ ÁÙÀ» Àо ·çÇÁ³» ±¸¹®À» ½ÇÇàÇϰí,. . . . ÁøÇàµÇ´Â °ÍÀÔ´Ï´Ù. ¶ó¸¶ºÏ¿¡ ³ª¿Â ¾ê±â´ë·Î ¸¸¾à ¼ö¹é¸Þ°¡ ¹ÙÀÌÆ®¿¡ À̸£´Â ·Î±×ÆÄÀÏÀ» ¿¬´Ù°í »ý°¢Çغ¸¸é, À̰ÍÀ» óÀ½ºÎÅÍ ³¡±îÁö ´Ù ÀоîµéÀÎ ´ÙÀ½¿¡ ·çÇÁ¸¦ µ¹¸®´Â for ³ª foreach ÀÇ °æ¿ì´Â ÇÑÁÙ¾¿ ÀоîµéÀÌ´Â while ¿¡ ºñÇØ ÇÁ·Î±×·¥ ½ÇÇà¼Óµµ°¡ ÇöÀúÈ÷ ¶³¾îÁú ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù.

for() ³ª foreach() ÄÚµå ¿ª½Ã Ãà¾à °¡´É ÇÕ´Ï´Ù. ÀÌ·¸°Ô¿ä.


 open (FI, "myfile") || die ("can't open myfile");
 print for (<FI>);
 

ÆÄÀÏÀ» ÀоîµéÀÌ´Â °ÍÀº ÀÌÇØ°¡ µÇ½ÃÁÒ?

ÆÄÀÏ ¾²±â

ÆÄÀϾ²±â ¿ª½Ã Àбâ¿Í ¶È°°½À´Ï´Ù. ´Ü ¿­¶§ ¾²±â¸ðµå·Î ¿¬´Ù´Â °Í¸¸ ´Ù¸¥ °ÍÀÌÁÒ.
ÆÄÀϾ²±â´Â print() ÇÔ¼ö¸¦ »ç¿ëÇÕ´Ï´Ù.
¿¹¸¦µé¾î myfile À̶ó´Â ÆÄÀÏÀ» »õ·Î ¸¸µé¾î¼­ ¹º°¡¸¦ ¾²·Á¸é,


 open (FH, ">myfile") || die ("Can't open myfile");
 print FH "It's a beautiful day !";
 

print ´ÙÀ½¿¡ ÆÄÀÏÇÚµéÀ» ½áÁÖ°í, ½á³ÖÀ» ³»¿ëÀ» Àû¾îÁÖ´Â °ÍÀÌÁÒ.
print ´ÙÀ½¿¡ ÆÄÀÏÇÚµéÀ» »ý·«ÇÏ¸é Æ¯Á¤ ÆÄÀÏ¿¡ ¾²±â¸¦ ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó default ÀΠǥÁØÃâ·Â (ÀϹÝÀûÀ¸·Î ¸ð´ÏÅÍ) ¿¡ °á°ú¸¦ ¶ç¿öÁÖ°Ô µË´Ï´Ù.

ÆÄÀÏÀ» ºÙ¿©¾²±â ¸ðµå·Î ¿­¾î¼­ »õ·Î¿î ³»¿ëÀ» ÆÄÀÏ ³¡¿¡ ÷°¡ÇÒ ¼öµµ ÀÖÀ» °ÍÀÔ´Ï´Ù.


 open (FH2, ">>myfile") || die "Can't open myfile";
 print FH2 "2002/9/1 : ¿À´Ã Ãß°¡ÇÑ ³»¿ëÀÔ´Ï´Ù";
 

°£´ÜÇÏÁÒ?

¿¹¸¦µé¾î À¥½ÎÀÌÆ® ¹æ¹®°´ ·Î±×ÆÄÀÏÀ» ¸¸µå´Â ÄÚµå Áß ÀϺδ ÀÌ·¸°Ô ÇÏ¸é µÉ °Ì´Ï´Ù.


 open (LOG, ">>logfile.txt") || die ("Can't open logfile.txt");
 print LOG "$ENV{'REMOTE_ADDR'}|$ENV{'HTTP_USER_AGENT'}\n";
 

$ENV{'REMOTE_ADDR'} µîÀÇ È¯°æº¯¼ö´Â ÆÞÀ» ÀÌ¿ëÇÑ cgi °³¹ß ±ÛÀ» Âü°íÇϽñ¸¿ä. À§ÀÇ ÄÚµå´Â ·Î±×ÆÄÀÏÀ» ºÙ¿©¾²±â ¸ðµå·Î ¿­¾î¼­ °¢ ÁÙ¿¡ "Á¢¼ÓÀÚ ipÁÖ¼Ò|»ç¿ë À¥ºê¶ó¿ìÁ®" ·Î ±â·ÏÇØÁÝ´Ï´Ù.

Àб⠾²±â ¸ðµå

À§¿¡¼­ ÆÄÀÏÀ» Àбâ¸ðµå, ¾²±â¸ðµå·Î ¿©´Â ¹æ¹ýÀ» ¾Ë¾Æ º¸¾Ò½À´Ï´Ù.
ÇÏÁö¸¸ ÀÌ·± °æ¿ìµµ ÀÖÁö ¾Ê°Ú½À´Ï±î.
¿¹¸¦µé¾î ¾î¶² ÆÄÀÏÀ» ¿­¾î¼­ ±× ³»¿ë Áß ÀϺθ¦ °íÄ¡°í ½ÍÀº °æ¿ì, Àбâ¸ðµå·Î ¿­¾î¼­´Â ³»¿ëÀ» °íÄ¥ ¼ö°¡ ¾øÀ» °ÍÀÌ°í ¾²±â¸ðµå·Î ¿­¾î¼­´Â ±âÁ¸ÀÇ ³»¿ëÀÌ ¾ø¾îÁ® ¹ö¸®°Å³ª ³¡¿¡ »õ·Î¿î ³»¿ëÀ» µ¡ºÙÀÌ´Â °Í Á¤µµ¹Û¿¡ ÇÒ ¼ö°¡ ¾ø½À´Ï´Ù. ÀÌ·²¶§ ¾²´Â ¸ðµå°¡ ÀÖ½À´Ï´Ù.


 open FILEHANDLE, "+<myfile";
 

À̰ÍÀº ÆÄÀÏÀ» ¿­¾î¼­ ±× ³»¿ëÀ» Àоî¿Ã ¼ö ÀÖÀ» »Ó¸¸ ¾Æ´Ï¶ó, ÆÄÀÏ¿¡ ¾²±â (³»¿ë¼öÁ¤) µµ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇѰ¡Áö Á¶½ÉÇÏ½Ç Á¡Àº myfile À̶ó´Â ÆÄÀÏÀÌ ¾ø´Â °æ¿ì »õ·Î¿î ÆÄÀÏÀ» ¸¸µéÁö´Â ¸øÇÑ´Ù´Â Á¡ ÀÔ´Ï´Ù.

ÀÌ ¸ðµå´Â ´ÙÀ½¿¡ ÅØ½ºÆ® µ¥ÀÌŸº£À̽º¸¦ ´Ù·ê¶§ ÇÑ ¹ø ´õ ÀÚ¼¼È÷ »ìÆìº¸µµ·Ï ÇϰڽÀ´Ï´Ù.

ÆÄÀÏ Å×½ºÆ®

ÆÄÀÏÅ×½ºÆ® ¶ó´Â °ÍÀº ¹®ÀÚ±×´ë·Î ÆÄÀÏÀ» Å×½ºÆ® ÇØº¸´Â °ÍÀÔ´Ï´Ù. ¾î¶² ÆÄÀÏÀÌ ÀÐÀ» ¼ö ÀÖ´Â ÆÄÀÏÀÎÁö, ¾î¶² ÆÄÀÏÀÌ ¾²±â°¡ °¡´ÉÇÑ ÆÄÀÏÀÎÁö, ¾î¶² ÆÄÀÏÀÇ Å©±â°¡ 100k ÀÌ»óÀÎÁö, ¾î¶² ÆÄÀÏÀÌ ¸¸µé¾îÁøÁö 10 ÀÏÀÌ ¾ÈµÇ¾ú´ÂÁö µîµîµîÀ» Å×½ºÆ® ÇØº¼ ¼ö ÀÖ´Â °ÍÀÌÁÒ. ¹æ¹ýÀº °£´ÜÇÕ´Ï´Ù. if ´ÙÀ½¿¡ ÆÄÀÏÅ×½ºÆ®¹®À» ºÙ¿©ÁÖ¸é µÇ±¸¿ä, ÆÄÀÏÅ×½ºÆ®´Â ÀÌ·± °ÍµéÀÌ ÀÖ½À´Ï´Ù.

-e ÆÄÀÏÀ̳ª µð·ºÅ丮°¡ Á¸ÀçÇÏ´ÂÁö
-r ÆÄÀÏÀ̳ª µð·ºÅ丮°¡ ÀÐÀ» ¼ö ÀÖ´Â °ÍÀÎÁö
-w ÆÄÀÏÀ̳ª µð·ºÅ丮°¡ ¾²±â °¡´É ÇÑÁö
-x ÆÄÀÏÀ̳ª µð·ºÅ丮°¡ ½ÇÇà °¡´É ÇÑÁö
-o ÆÄÀÏÀ̳ª µð·ºÅ丮°¡ ÇöÀç À¯Á®ÀÇ ¼ÒÀ¯ÀÎÁö
-f À̰ÍÀÌ ÆÄÀÏÀÎÁö
-d À̰ÍÀÌ µð·ºÅ丮ÀÎÁö
-l À̰ÍÀÌ ½Éº¼¸¯ ¸µÅ©ÀÎÁö
-M ¼öÁ¤ÇÑÁö ¸çÄ¥ µÇ¾ú´ÂÁö
-A ¾ï¼¼½º µÈÁö ¸çÄ¥ µÇ¾ú´ÂÁö

À̿ܿ¡µµ ¸î°¡Áö ´õ ÀÖ½À´Ï´Ù¸¸.
ÀÌ·¸°Ô ¾²ÀÌ°Ô µË´Ï´Ù.
¿¹¸¦µé¾î À§¿¡¼­ +<< ¸ðµå´Â ÆÄÀÏÀÌ ¾øÀ»¶§ »õ·Î ¸¸µéÁö´Â ¸øÇÑ´Ù°í Çߴµ¥¿ä, ÆÄÀÏÅ×½ºÆ®¸¦ ÀÌ¿ëÇϸé À̸¦ ÇØ°áÇÒ ¼ö ÀÖ½À´Ï´Ù.


 if (-e "myfile") {
 	open (MY, "+<myfile") || die ("Can't open");
 }
 else {
 	open (MY, ">myfile") || die ("Can't create")
 }
 

if (-e "myfile") À̶ó´Â °ÍÀº myfile À̶ó´Â ÆÄÀÏÀÌ ÀÖ´À³Ä¸¦ Å×½ºÆ® ÇÏ´Â °ÍÀÔ´Ï´Ù. myfile ÀÌ Á¸ÀçÇϸé if() °ýÈ£¾ÈÀº ÂüÀÌ µÇ´Â °ÍÀÌÁÒ.

´Ù¸¥ ¿¹·Î, ¾î¶² µð·ºÅ丮³»ÀÇ html ÆÄÀϵé Áß ¼öÁ¤ÇÑÁö 5ÀÏ ÀÌ»óÀÎ ÆÄÀϵ鸸 µû·Î ¸ðÀ¸°í ½Í´Ù¸é,


 @files = glob("*.html");
 foreach $file (@files) {
 	if (-M $file > 5) {
 		push @old_files, $file
 	}
 }
 print "@old_files";
 

glob("*.html") ¿¡ ´ëÇØ¼­´Â ¾ÆÁ÷ ¸»¾¸ ¾Èµå·ÈÁö¸¸, ¿ì¼±Àº ¾î¶² µð·ºÅ丮³»ÀÇ È®ÀåÀÚ°¡ html ÀÎ ÆÄÀϵéÀÇ À̸§µéÀ» ¸®½ºÆ® ÇüÅ·Π¹ÝȯÇÏ´Â °ÍÀ̶ó°í ¾Æ½Ã¸é ¹«¸®°¡ ¾øÀ» °Í °°½À´Ï´Ù.

±âº»ÀûÀÎ µð·ºÅ丮 ÀÛ¾÷

±âº»ÀûÀÎ µð·ºÅ丮 ÀÛ¾÷¿¡´Â ´Ù¸¥ µð·ºÅ丮·ÎÀÇ À̵¿, µð·ºÅ丮 ¸¸µé±â, µð·ºÅ丮 ¾ø¾Ö±â µîÀÌ ÀÖ½À´Ï´Ù. °¢°¢À» ¾Ë¾Æº¸¸é,

1. µð·ºÅ丮 À̵¿

µð·ºÅ丮 À̵¿Àº (À¯´Ð½º ½© ¸í·É¾î cd ¿Í ¶È°°Àº ±â´É) ÀÌ·¸°Ô ÇÕ´Ï´Ù.

chdir "/bin" or die ("can't change directory");

ÁÖÀÇÇÏ½Ç Á¡Àº À©µµ¿ìÁî¿¡¼­ »ç¿ëÇÏ½Ç ¶§µµ À¯´Ð½º ¹æ½ÄÀ¸·Î µð·ºÅ丮 ÆÐ¾²¸¦ ½áÁà¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù.
¿¹¸¦µé¾î, C µå¶óÀ̺꿡 ÀÖ´Â WINNT ¶ó´Â µð·ºÅ丮·Î À̵¿ÇÏ·Á°í ÇÑ´Ù¸é,

chdir "C:/WINNT" or die ("can't change directory");

°¡ µË´Ï´Ù. C:\WINNT ÇÏ¸é ¿¡·¯°¡ ³ªÁÒ. Á¶½ÉÇϼ¼¿ä.

2. µð·ºÅ丮 ¸¸µé±â

¿ª½Ã ½© ¸í·É¾î¿Í ¶È°°½À´Ï´Ù.

mkdir "backup", 0755 || die "can't create directory";

À§ ÄÚµå´Â ÆÛ¹Ì¼ÇÀÌ 755 À̰í, À̸§ÀÌ backup ÀÎ µð·ºÅ丮¸¦ ÇöÀç ÆÞ ÇÁ·Î±×·¥ÀÌ ÀúÀåµÈ µð·ºÅ丮³»¿¡ ¸¸µå´Â ÄÚµå ÀÔ´Ï´Ù. ÆÛ¹Ì¼Ç¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº ÀÌ ±ÛÀÇ ÁÖÁ¦¿Í Á» ¹þ¾î³ª¹Ç·Î »ý·«ÇϰڽÀ´Ï´Ù. ÇѰ¡Áö ÁÖÀÇÇÏ½Ç Á¡Àº 755 ¾Õ¿¡ ²À 0 À» ºÙ¿©¼­ 0755 ·Î ÇØ¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ¿Ö ±×·²±î¿ä. ¿ì¸®°¡ ½ºÄÉÀÏ¶ó º¯¼ö ¿¡¼­ »ìÆìº» °Íó·³ ÆÞÀº ¼ýÀÚ¸¦ ÆÄ¾ÇÇÒ¶§ ¸Ç ù¼ýÀÚ°¡ 0 À¸·Î ½ÃÀÛÇÏ´Â ¼ýÀÚ¸¸ 8Áø¼ö·Î ¾Ë¾Æº¸±â ¶§¹®ÀÔ´Ï´Ù. ¸¸¾à 755 ¶ó°í¸¸ ÇØ³õÀ¸¸é ÆÞÀº À̰ÍÀ» ½ÊÁø¼ö 755 ·Î ¾Ë°Ô µÇÁÒ.

3. µð·ºÅ丮 ¾ø¾Ö±â

³»¿ë¹°ÀÌ ¾ø´Â µð·ºÅ丮ÀÇ °æ¿ì¿¡´Â ÀÌ·¸°Ô ÇÏ½Ã¸é µË´Ï´Ù.

rmdir "temp" or die "can't delete temp directory";

ÇÏÁö¸¸ ³»¿ë¹°ÀÌ ÀÖ´Â °æ¿ì¿£ À§ ÄÚµå·Î Áö¿öÁöÁö ¾Ê½À´Ï´Ù. ±×·¯¸é ³»¿ë¹°ÀÌ ÀÖ´Â µð·ºÅ丮´Â ¾î¶»°Ô Áö¿ï±î¿ä? ¾Æ¸¶ ÀÌ ±ÛÀ» ´Ù ÀÐ°í ³ª½Ã¸é ½º½º·Î ÄÚµùÀ» ÇØ³»½Ç ¼ö ÀÖÀ» °Ì´Ï´Ù. µð·ºÅ丮 ³»ÀÇ ÆÄÀÏÀ» ´Ù Áö¿î ´ÙÀ½ µð·ºÅ丮¸¦ Áö¿ì¸é µÇÁÒ.

º¸½Å °Íó·³ ´ëü·Î À¯´Ð½º ¸í·É¾î¿Í ¸Å¿ì À¯»çÇÏ´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ¹Ù·Î ÀÌ·± ¸éµéÀÌ ÆÞÀ» À¯´Ð½º¿¡ ´õ¿í ±í¼÷È÷ »Ñ¸® ³»¸®°Ô ÇѰÍÀÌÁÒ. ±âÁ¸ÀÇ À¯´Ð½º Áö½ÄÀ» ±×´ë·Î Áö·¿´ë·Î Ȱ¿ëÇÒ ¼ö ÀÖÀ¸´Ï±î¿ä.

Globbing

µð·ºÅ丮³»¿¡ ÀÖ´Â ÆÄÀϵé Áß¿¡ ƯÁ¤ È®ÀåÀÚÀÇ ÆÄÀϸ¸ µû·Î ¸ð¾Æ¾ß ÇÒ °æ¿ì°¡ ¸¹ÀÌ ÀÖ½À´Ï´Ù. ÀÌó·³ ÆÄÀÏ À̸§ÀÌ ¾î¶² ÆÐÅÏ¿¡ ¸Â´Â °Í¸¸ ¸ðÀ¸´Â °ÍÀ» globbing À̶ó°í ÇÕ´Ï´Ù. ÆÞ¿¡¼­´Â glob "pattern"; ÀÇ ÇüÅ·Π¾²½Ã¸é µË´Ï´Ù. ¿¹¸¦µé¾î ³» ¹®¼­ µð·ºÅ丮·Î À̵¿Çؼ­ È®ÀåÀÚ°¡ .txt ÀÎ ÆÄÀϵéÀÇ À̸§¸¸ µû·Î ¸ðÀ¸°í ½Í´Ù¸é,


  chdir "/home/linuxer/doc" || die "can't cd";
  @text_files = glob "*.txt";
  print "@text_files";
  

@text_files ³»¿¡´Â È®ÀåÀÚ°¡ .txt ÀÎ ÆÄÀϵéÀÇ À̸§ÀÌ µé¾î°¡ ÀÖ°Ô µË´Ï´Ù. glob " " ³»¿¡´Â ¿©·¯°¡Áö ÆÐÅÏÀ» ¾µ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦µé¾î È®ÀåÀÚ°¡ .html ÀÎ ÆÄÀÏ Áß b ·Î ½ÃÀÛÇÏ´Â ÆÄÀϸ¸ ¸ðÀ¸°í ½Í´Ù¸é,

@b_files = glob "b*.html";

·Î ÇÏ½Ã¸é µË´Ï´Ù. ¶ÇÇÑ µû¿ÈÇ¥³»¿¡¼­´Â variable interpolation ÀÌ °¡´ÉÇϹǷΠº¯¼ö À̸§À» »ç¿ëÇÏ½Ç ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô¿ä.


  $mydir = "/home/linuxer/";
  @mp3 = glob "$mydir/*.mp3";
  

ÀϹÝÀûÀÎ Å« µû¿ÈÇ¥¿Í ¸¶Âù°¡ÁöÁÒ.

´Ù¸¥ ¿¹¸¦ Çϳª ´õ µé¾îº¼±î¿ä?
¸¸¾à ¾î¶² µð·ºÅ丮³»ÀÇ ÆÄÀÏ Áß¿¡ executable ÇÑ ÆÄÀϸ¸ ¸ðÀ¸°í ½Í´Ù¸é, ¾Õ½Ã°£¿¡ ¹è¿î ÆÄÀÏÅ×½ºÆ®¸¦ Ȱ¿ëÇØ¼­ ÀÌ·¸°Ô ÇÏ½Ã¸é µË´Ï´Ù.


  @files = glob "*";
  foreach $file (@files) {
  	push @xcutable, $file if -x $file
  }
  print "@xcutable";
  

foreach ¾ÈÀÇ push ±¸¹®ÀÌ È¤½Ã Á¶±Ý »ý¼ÒÇØ º¸À̽ôÂÁö¿ä?
±× ±¸¹®Àº,


  if (-x $file) {
  	push @xcutable, $file
  }
  

¿Í ¶È°°Àº °ÍÀÔ´Ï´Ù. ÇÑ ÁÙ·Î ¾²´Ï±î ÈξÀ °£¼ÒÇØÁöÁÒ? ¹Ù·Î À§¿Í °°Àº ½ºÅ¸ÀÏÀÌ ÆÞ ÄÚµù ½ºÅ¸ÀÏ ÀÔ´Ï´Ù. óÀ½¿¡´Â if ( ) { } ÇüÅ·ΠÂ÷±ÙÂ÷±Ù ÄÚµùÇØ¼­ ÀÍÈ÷½Ã´Â°Ô ÁÁ°ÚÁö¸¸ Àͼ÷ÇØÁö°í ³ª¸é À§¿Í °°ÀÌ ÇÑ ÁÙ·Î ÁÙ¿©¼­ ÄÚµùÇÏ´Â °Íµµ ÁÁ½À´Ï´Ù. ¿ì¼± Äڵ尡 °£´ÜÇØÁö±¸¿ä, ÀÚ¼¼È÷ º¸½Ã¸é ÀÚ¿¬¾î (ºñ·Ï ¿µ¾îÁö¸¸) ¿Í ±²ÀåÈ÷ À¯»çÇÑ ÇüÅ·ΠÄÚµùÀÌ µÉ ¼ö ÀÖ´Ù´Â °ÍÀ» ´À³¢½Ç ¼ö ÀÖÀ» °Ì´Ï´Ù.

µü "¸¸¾à .. ¶ó¸é .. ÇØ¶ó" ÀÇ ÇüÅÂÀÌÁö ¾Ê½À´Ï±î? ÀÏ»ó¾î¸¦ ±¸»çÇÏ´Â ½ÄÀ¸·Î Âß ÄÚµùÀ» ÇÒ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. ¾ð¾îÇÐÀÚ°¡ ¸¸µç ÇÁ·Î±×·¡¹Ö ¾ð¾î¶ó´Â °ÍÀÌ ÀÌ·±µ¥¼­ µå·¯³³´Ï´Ù.

°°Àº ½ÄÀ¸·Î À§ÀÇ ÄÚµå´Â ´ÙÀ½°ú °°ÀÌ ´õ ÁÙÀÏ ¼öµµ ÀÖ½À´Ï´Ù. glob "*" À» ¾Æ¿¹ if () ¾È¿¡ Áý¾î³ÖÀ» ¼ö ÀÖ½À´Ï´Ù.


  foreach $file (glob "*") {
  	push @xcutable, $file if -x $file
  }
  print "@xcutable";
  

À½. . There is more than one way to do it. ¾Æ½ÃÁÒ?

Âü°í·Î, Á» ¿À·¡µÈ ÆÞ Äڵ忡¼­´Â ÆÄÀÏÀ̸§ ±Û·ÎºùÀ» glob ´ë½Å <> À» ÀÌ¿ëÇÑ °æ¿ì°¡ ¸¹ÀÌ ÀÖ½À´Ï´Ù. <> »çÀÌ¿¡ ÆÐÅÏÀ» ³ÖÀº °ÍÀÌÁÒ. ÀÌ·± ¹æ½ÄÀº ÆÄÀÏÇÚµé ÀоîµéÀ̴°Ͱú Çò±ò¸®´Ï±î °¡±ÞÀû »ç¿ëÇÏÁö ¸¶½Ã±¸¿ä. ´Ù¸¥ »ç¶÷ÀÇ Äڵ带 Àбâ À§Çؼ­ ±×³É ¾Ë¾ÆµÎ½Ã±â¸¸ ÇÏ¸é µÇ°Ú½À´Ï´Ù. ÀÌ·±°Ì´Ï´Ù.

@files = </home/linuxer/*.mp3>;
  @files = glob ("/home/linuxer/*.mp3");
  

µÎ°³´Â °°Àº °ÍÀÔ´Ï´Ù.

±×¸®°í, glob "" Àº ÆÄÀÏÀ̸§À» a,b,c.. ¼ø¼­·Î ¹Ýȯ ÇÕ´Ï´Ù. ÁÁÀº Á¡ÀÌÁÒ? ¶Ç ÇϳªÀÇ Æ¯Â¡Àº invisible file (Á¡À¸·Î ½ÃÀÛÇÏ´Â ÆÄÀÏ) µéÀÇ À̸§Àº ´ã±âÁö ¾Ê´Â´Ù´Â Á¡ ÀÔ´Ï´Ù.

glob "" ´ë½Å¿¡ µð·ºÅ丮 ÇÚµéÀ» ¾µ ¼öµµ ÀÖ½À´Ï´Ù. µð·ºÅ丮 ÇÚµéÀº ÆÄÀÏÇÚµé °ú À¯»ç ÇÕ´Ï´Ù. ´ÜÁö open() ´ë½Å¿£ opendir() ¸¦ ¾²°í, µð·ºÅ丮³»ÀÇ ÆÄÀÏÀ̸§Àº readdir() ¸¦ ÀÌ¿ëÇØ¼­ Àоî¿Â´Ù´Â Á¡ÀÌ ´Ù¸¨´Ï´Ù.


  $dir = "/usr/local/bin";
  opendir DH, $dir || die "can't open"; 
  # µð·ºÅ丮 ÇÚµé DH ·Î "/usr/local/bin" À» ¿­°í
  @files = readdir DH; # µð·ºÅ丮 ÇÚµéÀ» Àо @files ¿¡ ´ã°í
  foreach $file (@files) {
  	print "$file\n"
  }
  

glob "" °ú ´Ù¸¥ Á¡Àº ¼û°ÜÁø ÆÄÀÏ (invisible file) ±îÁö ´Ù Àоî¿Â´Ù´Â Á¡ ÀÔ´Ï´Ù.

°è¼ÓÇØ¼­ ÆÄÀÏ ´Ù·ç´Â °Í°ú °ü·ÃµÈ ³»¿ëÀ» ¾Ë¾Æº¾½Ã´Ù.

ÆÄÀÏ ´Ù·ç±â

1. ÆÄÀÏ Áö¿ì±â

ÆÄÀÏÀ» Áö¿ì·Á¸é,

unlink "temp1";

rm °¡ ¾Æ´Õ´Ï´Ù. unlink ÀÔ´Ï´Ù. unlink ¿¡ ÀÇÇØ¼­ ¹ÝȯµÇ´Â °ªÀº Áö¿öÁø ÆÄÀÏÀÇ °¹¼ö ÀÔ´Ï´Ù.

¸¸¾à tmp ¶ó´Â µð·ºÅ丮¿¡ ÀÖ´Â ÆÄÀÏ Áß 10ÀÏ ÀÌ»ó ¾ï¼¼½º µÇÁö ¾ÊÀº ÆÄÀϵ鸸 ´Ù Áö¿ì·Á¸é,


  chdir "/home/linuxer/tmp" || die "can't cd";
  @files = glob "*";
  foreach $file (@files) {
  	unlink $file if -A $file > 10
  }
  

2. ÆÄÀÏ À̸§ ¹Ù²Ù±â

rename ÀÔ´Ï´Ù.

rename "old" , "new";

¶ó¸¶ºÏ¿¡ ¾ÆÁÖ ÁÁÀº ¿¹°¡ Àֳ׿ä. ¾î¶² µð·ºÅ丮³»ÀÇ ÆÄÀÏ Áß È®ÀåÀÚ°¡ .txt ÀΰÍÀ» .html ·Î ¹Ù²Ù°í ½Í´Ù¸é,


  foreach my $old_name (glob "*.txt") {
  	my $new_name = $old_name;
  	$new_name =~ s/\.txt$/.html/;
  	if (-e $new_name) {	
  		warn "can't rename $old_name to $new_name: $new_name exists !\n";
  	}
  	elsif (rename $old_name, $new_name) {}
  	else {
  		die "rename failed :$!\n";
  	}
  }
  

¹¹ ¾ÆÁÖ ÆòÀÌÇÑ ÄÚµåÁÒ. elsif ºÎºÐÀº ÁÖÀÇÇØ¼­ º¸½Ã±â ¹Ù¶ø´Ï´Ù. warn Àº die ¿Í ºñ½ÁÇÑ °ÍÀÔ´Ï´Ù.

3. ÆÛ¹Ì¼Ç ¹Ù²Ù±â


  chmod 0755 , "*.pl";
  

¶È°°½À´Ï´Ù. ±×ÃÝ?


4. ÆÄÀÏ Ä«ÇÇ

°£´ÜÇÑ ¹æ¹ýÀ¸·Î´Â ½Ã½ºÅÛ ÇÔ¼ö cp (µµ½ºÀÇ °æ¿ì´Â copy) ¸¦ ÀÌ¿ëÇÏ¸é µË´Ï´Ù. system() ÇÔ¼ö´Â À¯´Ð½º ½© Ä¿¸Çµå¸¦ ÆÞ ³»¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â ÇÔ¼ö ÀÔ´Ï´Ù.


  system ("cp $oldfile, $newfile");
  

ÆÄÀÏ Á¤º¸

¾î¶² ÆÄÀÏ¿¡ °üÇÑ ¸ðµç Á¤º¸¸¦ ÇѲ¨¹ø¿¡ ¾Ë·ÁÁÖ´Â ÇÔ¼ö°¡ ÀÖ½À´Ï´Ù. ¹Ù·Î stat() ÇÔ¼ö ÀÔ´Ï´Ù.


  my ($dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, 
  $atime, $mtime, $ctime, $blksize, $blocks) = stat($filename);
  

º¸½Å °Íó·³ ÆÄÀÏÀ̸§À» ³Ö¾îÁÖ¸é ±× ÆÄÀÏÀÇ ÆÄÀϽýºÅÛÀÇ device number, inode number, mode (ÆÄÀÏ Å¸ÀÔ°ú ÆÛ¹Ì¼Ç), Çϵ帵ũÀÇ °¹¼ö, user-ID, group-ID, device identifier, ÆÄÀÏÀÇÅ©±â(¹ÙÀÌÆ® ´ÜÀ§), ¾ï¼¼½ºµÈ ½Ã°£, º¯°æµÈ ½Ã°£, inode º¯°æ½Ã°£, ÆÄÀϽýºÅÛ I/O ¸¦ À§ÇØ ÇÊ¿ä·ÎÇÏ´Â ºí·°Å©±â, ½ÇÁ¦·Î ÇÒ´çµÈ ºí·°Å©±â µîÀÌ ¸®ÅÏ µË´Ï´Ù. ±×¾ß¸»·Î ÃÑüÀûÀÎ ÆÄÀÏ Á¤º¸¸¦ ´Ù ¾ò¾î³»´Â °ÍÀÌÁÒ. Á¶±Ý À¯´Ð½º ½ºÆä½ÃÇÈÇÑ ºÎºÐÀ̱ä ÇÕ´Ï´Ù¸¸Àº.

À§¿¡¼­ ÆÄÀÏÀ» º¯°æÇÑ ½Ã°£, ¾ï¼¼½ºÇÑ ½Ã°£µîÀ» ¾Ë ¼ö ÀÖ´Ù°í Çߴµ¥¿ä.
Á¶±Ý ´õ ÀÚ¼¼È÷ ¾Ë¾Æº¸°Ú½À´Ï´Ù.
¿¹¸¦µé¾î index.html À̶ó´Â ÆÄÀÏÀÇ º¯°æÇѽð£, ¾ï¼¼½ºÇÑ (ÀÐÀº) ½Ã°£À» Ãâ·ÂÇØÁÖ´Â ÄÚµå´Â ÀÌ·¸°Ô µË´Ï´Ù.


  my ($atime, $mtime) = ((stat("index.html"))[8,9];
  print "$atime\n$mtime\n";
  

ÀÌ Äڵ忡¼­ ÁÖÀÇÇÏ½Ç Á¡Àº¿ä, stat() ¿¡ ÀÇÇØ ¹ÝȯµÇ´Â ¿©·¯ ÆÄÀÏ Á¤º¸ Áß 9¹øÂ°, 10¹øÂ°°¡ ¹Ù·Î ¾ï¼¼½ºÇÑ ½Ã°£, º¯°æÇÑ ½Ã°£À̱⠶§¹®¿¡ [8,9] ÀÌ µÈ °ÍÀ̱¸¿ä. (¹è¿­Àº 0 ºÎÅÍ ¼¾´Ù°í Çß½À´Ï´Ù.) Çϳª Ư±âÇÒ¸¸ÇÑ °ÍÀº stat() ¾ÕµÚ¸¦ ¶Ç ÇϳªÀÇ °ýÈ£·Î °¨½Õ´Ù´Â Á¡ÀÔ´Ï´Ù. ±× °ýÈ£¸¦ »©¸é À§ ÄÚµå´Â ¿¡·¯°¡ ³³´Ï´Ù. ¿Ö³Ä. ¾î¶²°ª, º¯¼ö¿¡ °ýÈ£¸¦ ¾º¿ì´Â °ÍÀº ±× °ª/º¯¼ö¸¦ ¹è¿­·Î Ãë±ÞÇϰڴٴ °ÍÀ» ÀǹÌÇÕ´Ï´Ù. Áï °ýÈ£·Î °¨½ÎÁø °ÍÀº ¸®½ºÆ® ÄÁÅØ½ºÆ®°¡ µÈ´Ù´Â °ÍÀÌÁÒ. À§ÀÇ °æ¿ì stat() ¿¡ ÀÇÇØ ¹ÝȯµÈ °ªµéÀº ºÎ°¡ÀûÀÎ °ýÈ£¿¡ ÀÇÇØ ¸®½ºÆ®·Î Ãë±ÞµÉ°ÍÀ̰í, ±× °á°ú (list)[8,9] ÀÇ ÇüŰ¡ µÉ ¼ö ÀÖ´Â °ÍÀÔ´Ï´Ù. ÀÌÇØµÇ½ÃÁÒ? °ýÈ£·Î °¨½Î¸é ¸®½ºÆ® ÄÁÅØ½ºÆ®°¡ µË´Ï´Ù. ÀØÁö ¸¶¼¼¿ä.

´Ù½Ã ÁÖÁ¦·Î µ¹¾Æ¿Í¼­, À§ Äڵ带 ½ÇÇàÇØº¸¸é ÀÌ·± ½ÄÀ¸·Î ³ª¿É´Ï´Ù.


  1031069374
  1030907766
  

½Ã°£ÀÌ ÀÌ·± ÇüÅ·Π³ª¿À¸é ¹Ù·Î Ȱ¿ëÇϱâ´Â ¾î·Æ°ÚÁÒ? ÀÌ ½Ã°£Àº 1970³â ÀÚÁ¤À» ±âÁ¡À¸·Î ÇØ¼­ ÃÊ´ÜÀ§·Î ¼¾ ¼ýÀÚµé ÀÔ´Ï´Ù. ÀÌ·± ¼ýÀÚ¸¦ ¿ì¸®°¡ ½±°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ÇüÅ·Π¹Ù²ãÁÖ´Â ÇÔ¼ö°¡ localtime() ÇÔ¼ö ÀÔ´Ï´Ù.

À̸¦Å׸é 1031069374 ¸¦ ¿ì¸®°¡ ¾Ë ¼ö ÀÖ´Â ÇüÅ·Π¹Ù²Ù·Á¸é,


  $atime = 1031069374;
  my ($sec, $min, $hour, $day, $mon, $year, $wday, $yday, $isdst) = localtime $atime;
  

±×·±µ¥ ÀÌ·¸°Ô ÇØµµ ¿ì¸®°¡ »ý°¢ÇÑ °Í°ú ¾à°£ ´Ù¸¨´Ï´Ù.
ù°, $mon ÀÇ °æ¿ì '¿ù' À» ¾Ë·ÁÁÖ±ä ÇÏÁö¸¸ 0 ºÎÅÍ 11 ±îÁö·Î ¼Á´Ï´Ù.
µÑ°,$year ¿ª½Ã ³¡ 2ÀÚ¸®¸¸À» ¾Ë·ÁÁÝ´Ï´Ù. ¿¹¸¦µé¾î 1989 ³â À̸é 89 °¡ ´ã±â´Â °ÍÀÌÁÒ. (2002 ³âÀÇ °æ¿ì 102 °¡ ´ã±é´Ï´Ù) µû¶ó¼­, ¿ì¸®°¡ ¿øÇÏ´Â ÃÖÁ¾ °á°ú¸¦ À§Çؼ­´Â ÀÌ·¸°Ô ÇØ¾ß ÇÕ´Ï´Ù.


  $atime = 1031069374;
  my ($sec, $min, $hour, $day, $mon, $year, $wday, $yday, $isdst) = localtime $atime;
  $mon++;
  $year += 1900;
  print "$year/$mon/$day , $hour:$min:$sec";
  

$monÀº 1À» ´õÇØÁÖ°í, $year´Â 1900 À» ´õÇØÁÖ¸é Á¤È®ÇÑ ¿ù,³âÀÌ ´ã±â°Ô µË´Ï´Ù.

Âü°í·Î $wday ¿¡´Â ¿äÀÏÀÌ ´ã±â´Âµ¥¿ä, ¿ù¿äÀÏÀº 1, È­¿äÀÏÀº 2, ¼ö¿äÀÏÀº 3, .. ÀÇ ¼ýÀÚ°¡ ´ã±é´Ï´Ù.

¸¸¾à ¿À´Ã ³¯Â¥¸¦ ³âµµ/¿ù/ÀÏ ÇüÅ·ΠÃâ·ÂÇÏ·Á¸é ÀÌ·¸°Ô ÇÒ ¼öµµ ÀÖÀ» °Ì´Ï´Ù.


  my ($day, $mon, $year) = (localtime)[3,4,5];
  $mon++; $year+=1900;
  print "$year/$mon/$day";
  

localtime ¿¡ °ýÈ£¸¦ °¨½Î¸é ÇöÀç½Ã°£À» ¸®½ºÆ® ÇüÅ·Π¹ÝȯÇϰÚÁÒ? (°ýÈ£·Î °¨½Î¸é ¸®½ºÆ® ÄÁÅØ½ºÆ®°¡ µÈ´Ù°í Çß½À´Ï´Ù)

À̹ø ½Ã°£¿¡ »ìÆìº» ³»¿ëÀº ½ÇÁ¦ ÄÚµù¿¡¼­ ¾ÆÁÖ È°¿ëµµ°¡ ³ôÀº ºÎºÐÀÔ´Ï´Ù.

Áö±Ý °è½Å °÷Àº: TECH > [ÆÞ] ÆÞÀ» ÀÌ¿ëÇÑ ÆÄÀϰú µð·ºÅ丮 °ü¸®