system( 'dir /b /s > files.tmp' ); open( IN, 'files.tmp' ); my @files = grep( /\.java$/, ); close IN; chomp( @files ); system( 'del files.tmp' ); print "Processing files.\n"; my $file; foreach $file (@files) { ... } #### use File::Find; find ({ 'wanted' => \&processfile, 'follow' => 0 }, '/'); sub processfile { my ($dev, $ino, $mode, $nlink, $uid, $gid); return unless (($dev, $ino, $mode, $nlink, $uid, $gid) = lstat($_)); return unless -f _ && -r _ && /^.*\.java\z/si; ... };