sub traverse_dir { my $dir = shift; my @entries = glob "$dir/*"; for my $entry (@entries) { if (-f $entry) { print "$entry:", -s $entry, "\n"; } elsif (-d $entry) { traverse_dir($entry); } else # perhaps do something for entries which are neither files nor subdirectories, if that sort of thing exists } } } traverse_dir ".";