use warnings; use strict; opendir my $dh, $ARGV[0] or die "can't open directory: $!"; while ( readdir $dh ) { chomp; next if $_ eq '.' or $_ eq '..'; #..... get each file to work on .... } closedir $dh or die "can't close directory: $!"; ### or use File::Find like so: use File::Find qw(find); find( sub { print $_, $/ }, $ARGV[0] );