in reply to hash array

Perl has multidimensional hashes. Just do the following

my %dates; while ... ... $dates{$owner}{$job_id}= DateCalc( $dates{$owner}{$job_id}, ... ... foreach (keys %{$dates{$owner}}) ...

This takes care of problems 1 and 3. To solve problem 2 you might store the results of the Datecalc into a different hash and use arrays to accumulate them, i.e. push @{$results{$owner}}, DateCalc...