#!/usr/bin/perl use warnings; use strict; use Cwd qw(abs_path); die "no directory provided " unless defined $ARGV[0]; my $path = abs_path $ARGV[0]; search_all_folder($path); sub search_all_folder { my ($folder) = @_; if ( -d $folder ) { chdir $folder; opendir my $dh, $folder or die "can't open the directory: $!"; while ( defined( my $file = readdir($dh) ) ) { chomp $file; next if $file eq '.' or $file eq '..'; search_all_folder("$folder/$file"); ## recursive call read_files($file) if ( -f $file ); } closedir $dh or die "can't close directory: $!"; } } sub read_files { my ($filename) = @_; open my $fh, '<', $filename or die "can't open file: $!"; while (<$fh>) { print $_, $/; } }