http://www.perlmonks.org?node_id=112881


in reply to Is readdir ever deterministic?

If you're trying to write cross-platform code you may want to keep something else in mind - another thing that isn't absolutely gauranteed is the characters the OS uses to represent the current and the parent directories.

I use File::Spec::Functions's no_upwards() function to check and see if the filename is the current working or parent directory or not:

#!/usr/bin/perl -wT use strict; use File::Spec::Functions qw(catdir rootdir no_upwards); use constant START_DIR => catdir(rootdir, qw(users foo)); opendir DIR, START_DIR or die 'Could not open directory ', START_DIR, ": $!"; while( defined(my $file = readdir DIR) ) { next unless no_upwards($file); print "$file\n"; #...do something with $file } closedir DIR;