#!/usr/bin/perl -w use latest; use File::Spec; my $test=$ARGV[0]; sub bfs { my $path=$_[0]; push(my @queue,$path); my @output; while(@queue) { $path=shift(@queue); if (-d $path) { my $dirname = (File::Spec->splitdir($path))[-1]; # Grab the last entry next if $dirname =~ /^\.\.?$/; # . or .. opendir my $dh,$path or die "opendir failure, $path: $!"; push @queue,map {File::Spec->catfile($path,$_)} readdir $dh; } elsif (-f $path) { say $path; } else { # say "Other entity encountered: $path"; next } } return @output; } bfs($test);