sub _get_list { my ($date, $report_dir, $config_dir, $hours) = @_; my %reports; if ($hours == 0) { %reports = _sum_report_entries($config_dir, 'report_master_list'); } else { %reports = _sum_report_entries($config_dir, 'report_temp_list'); if ($hours == 8) { _write_non_transferred_reports( %reports ); unlink "$config_dir/report_temp_list" or warn "$!"; return; # this *seems* to duplicate the logic! } _get_reports($date, $report_dir, $config_dir, \%reports); } sub _write_non_transferred_reports { my %reports = @_; open OUT, ">> /disk2/daily_report" or die "$!"; print OUT "\n\nDaily Reports That Were Unable To Be Transferred\n"; print OUT "------------------------------------------------\n\n"; for my $report (sort keys %reports) { print OUT "$report\n"; } print OUT "\n\n"; close OUT; } sub _sum_report_entries { my ($config_dir,$list_file) = @_ my $report = "$config_dir/$list_file"; my %sums; open REPORT, "<", $report or die "Cannot open ($report) for reading: $!"; while ( chomp (my $line = ) ) { $sums{$line}++; } close REPORT or warn "Cannot close ($report): $!"; return %sums; }