|
|
|
|
|
|
¡Ú ÇÏÀ§ µð·ºÅ丮±îÁö ¸ðµÎ °Ë»öÇϱâ
|
|
2002³â 3¿ù 28ÀÏ ÀüÁ¾ÇÊ
|
µð·ºÅ丮¸¦ Àд ¹æ¹ý¿¡´Â opendir, readdir, closedir¸¦ °°ÀÌ ÀÌ¿ëÇÏ´Â ¹æ¹ý°ú,
glob ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ´Â ¹æ¹ý µÎ °¡Áö°¡ ÀÖ½À´Ï´Ù.
±×·¯³ª, ±× µð·ºÅ丮ÀÇ ÇÏÀ§ µð·ºÅ丮±îÁö ¸ðµÎ ã¾Æ¼ ÀÐÀ¸·Á¸é, ±× ÇÔ¼ö ¿Ü¿¡µµ
Á» ´õ º¹ÀâÇÑ ³í¸®¸¦ ÷°¡ÇØ¾ß ÇÕ´Ï´Ù.
¿¹¸¦ µé¸é ´ÙÀ½°ú °°Àº ¹æ¹ýÀÌ ÀÖÀ» °ÍÀÔ´Ï´Ù.
my $dir = '.'; # ¶Ç´Â @ARGV·Î ¹ÞµçÁö...
my @dirs = ( $dir );
while( $dir = shift @dirs ) {
my @paths = glob("$dir/*");
foreach my $f (@paths) {
if( -d $f ) {
push @dirs, $f;
}
else {
# ¹º°¡ ÇÕ´Ï´Ù.
print "File : $f\n";
}
}
}
À§ ¿¹Á¦°¡ ÀÌÇØ°¡ °¡Áö ¾Ê´õ¶óµµ ½Å°æ¾²Áö ¸¶½Ê½Ã¿À. Áö±Ý ¼³¸íÇϰíÀÚ ÇÏ´Â °ÍÀº À§ ¿¹Á¦°¡ ¾Æ´Õ´Ï´Ù.
¹°·Ð, À§Ã³·³ ÇØµµ µÇÁö¸¸, ±»ÀÌ ÀÏÀ» º¹ÀâÇÏ°Ô ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. ½Ç¿ëÀûÀ¸·Î ÇØ¾ßÁö¿ä.
File::Find ¸ðµâÀ» »ç¿ëÇϸé
°£´ÜÇÏ°Ô ÇØ°áµË´Ï´Ù.
use File::Find;
my $dir = '.'; # ¶Ç´Â @ARGV·Î ¹ÞµçÁö...
find(\&print_if_file, $dir);
sub print_if_file {
if( -f $_ ) {
print "File : $File::Find::name\n";
}
}
°á°ú´Â °°Áö¸¸ ÈξÀ °£°áÇÕ´Ï´Ù.
File::Find ¸ðµâÀ» »ç¿ë(use)Çϰí, ±× ¸ðµâ¿¡¼ Á¤ÀÇµÈ find ÇÔ¼ö¸¦ È£ÃâÇÏ¸é¼ Ã¹¹øÂ° Àμö·Î
°¢ ÆÄÀÏȤÀº µð·ºÅ丮¸¦ ó¸®ÇÒ ¼ºê·çƾÀÇ ¸®ÆÛ·±½º¸¦ ³Ö¾îÁÖ°í, ±× µÚ·Î Àüü Æ®¸®¸¦ °Ë»öÇÒ
µð·ºÅ丮µéÀ» ³ª¿ÇÕ´Ï´Ù.
±×·¯¸é find ÇÔ¼ö´Â ¸ðµç µð·ºÅ丮µéÀ» ÇÏÀ§ µð·ºÅ丮±îÁö ã¾Æ °¡¸é¼ °¢ ÆÄÀÏ È¤Àº µð·ºÅ丮 Çϳª¸¦
ãÀ» ¶§ ¸¶´Ù Àμö·Î ¹Þ¾Ò´ø ¼ºê·çƾÀ» È£ÃâÇÏ¸é¼ $_ º¯¼ö¿¡ ÆÄÀÏ È¤Àº µð·ºÅ丮 À̸§À» ÀúÀåÇÕ´Ï´Ù.
ÀÌ ¶§, $File::Find::dir´Â ±× ÆÄÀÏ È¤Àº µð·ºÅ丮°¡ Á¸ÀçÇÏ´Â µð·ºÅ丮À̰í, $File::Find::nameÀº ÇØ´ç
ÆÄÀÏ/µð·ºÅ丮ÀÇ °æ·Î¸¦ ³ªÅ¸³À´Ï´Ù. ("$File::Find::dir/$_"´Â "$File::Find::name"°ú °°Àº °ªÀ»
°®½À´Ï´Ù.)
ÀÌ·¸°Ô Àüü °æ·Î¸¦ °Ë»öÇϸé, ±× ¸ñÀûÀÌ ºÒÇÊ¿äÇÑ ÆÄÀÏÀ» Áö¿ì´Â °ÍÀ̵ç, ƯÁ¤ÇÑ ÆÄÀϵéÀ» ¼öÁ¤Çϱâ
À§ÇÑ °ÍÀ̵ç, ¼Õ½±°í °£°áÇÏ°Ô ÀÏÀ» ó¸®ÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.
[¸ñ·ÏÀ¸·Î °¡±â]
|
|