sub direc { ... my $dir = "/my_dir"; opendir DIR, $dir; # Read in all directories in /my_dir first my @month_dir = grep /^\d{8}$/, readdir(DIR); my $current_dir = $month_dir[0] || ''; # I need to open only the latest directory here to continue # where I am stuck my $latest_dir = ... # Now read in all files in latest directory found opendir LATESTDIR, "$dir/$latest_dir"; # Read in all files, but ignore '.' and '..' my @files = grep !/^\.{1,2}$/, readdir(LATESTDIR); my @files; foreach my $file (@files) { # I only want txt next unless ($file =~ m/\.txt$/); push @files, "$file"; } closedir(LATESTDIR); closedir(DIR); return \@files; }