$dir1 = "/foo/bar1" $dir2 = "/foo/bar2" @filep; @fcontents; get_dir($dir1); get_dir($dir2); for (@filep) { my $fc = get_file($_); push @fcontents, $fc; } print "@fcontents"; sub get_dir { my $dir = shift ; opendir(DIR, $dir) || die "Cannot open dir. $!" ; my @files = grep !/^\.\.?$/, readdir DIR ; closedir DIR; for (@files) { $fn = join '/', ($dir, $_); push @filep, $fn; #return @filep ; } sub get_file { my $file = shift; local *IN; open (IN, "<$file") or die "Cannot read '$file': $!"; if (wantarray) { return ; } else { return join '', ; } }