[ perl ] readdirについて
perlでreaddirを用いてディレクトリを読むと、デフォルトではよくわからない順番で並んでいます。
これは、ディレクトリのファイルがファイルシステムとして、ある種の構造体に格納されているのが原因で、
のように普通にディレクトリを読むと、構造体リストの順番で@dir_listにファイル名が格納されます。
これをファイル名でソートするには、
のように、配列をsortします。
ディレクトリを先(もしくは後)に持ってきて、かつソートしたい場合は、
のような感じにするとよいかもです。
ところで、コンテンツが更新されたようです。
これは、ディレクトリのファイルがファイルシステムとして、ある種の構造体に格納されているのが原因で、
opendir DIR,$dir;
@entry_list = readdir DIR;
close DIR;
@entry_list = readdir DIR;
close DIR;
のように普通にディレクトリを読むと、構造体リストの順番で@dir_listにファイル名が格納されます。
これをファイル名でソートするには、
@sorted_entry_list = sort @entry_list;
のように、配列をsortします。
ディレクトリを先(もしくは後)に持ってきて、かつソートしたい場合は、
opendir DIR,$dir;
@entry_list = readdir DIR;
foreach $entry ( sort @entry_list ){
if(-d "$dir/$entry"){
push(@dir_list, $entry);
}else{
push(@file_list, $entry);
}
}
push( @sorted_entry_list, (@dir_list, @file_list));
#push( @sorted_entry_list, (@file_list, @dir_list));
close DIR;
@entry_list = readdir DIR;
foreach $entry ( sort @entry_list ){
if(-d "$dir/$entry"){
push(@dir_list, $entry);
}else{
push(@file_list, $entry);
}
}
push( @sorted_entry_list, (@dir_list, @file_list));
#push( @sorted_entry_list, (@file_list, @dir_list));
close DIR;
のような感じにするとよいかもです。
ところで、コンテンツが更新されたようです。
time stamp:2007/11/25 01:13:34
トラックバック(0)|コメント(0)
トラックバック(0)|コメント(0)
この記事のトラックバックURL:
http://aqua.s18.xrea.com/nanika/tb.cgi?b0KPh8
http://aqua.s18.xrea.com/nanika/tb.cgi?b0KPh8
コメントを書く
何かしら