我想按名称对目录中的文件进行排序/打印。我的代码列出了所有文件,但排序有偏差。以下是我的代码和结果。欢迎提出任何建议!
my $file;
opendir (DIR, "$dir");
while ($file = readdir(DIR)) {
push (my @files, $file);
@files = sort {$a cmp $b} @files; #NOT sorting!
foreach $file (@files) {
print "$file\n";
}
}
以下是“排序后”的结果:
Screenshot-Chess_-_Human_versus_GNUchess.png
test.html
katyperry.gif
test.cgi
Californication.S04E05.HDTV.XviD-ASAP.avi
FreeWatch_13.exe
proxy.jpg
test.pl-
.
attachment2.jpg
attachment.jpg
Californication.S04E06.HDTV.XviD-LOL.avi
Californication.S04E07.HDTV.XviD-LOL.avi
boxter.jpg
..
@files = readdir(DIR)
替换那个while
循环。 - Andy Lesterprint join("\n", sort { $a cmp $b } readdir(DIR))."\n";
- Anomielc
函数可以避免因名称大小写而导致的奇怪结果:@files = sort {lc($a) cmp lc($b)} @files; - superfry