in reply to searching two csv files

Depending on your requirements (is this a one-time thing, size of data, etc, and the 'difference' you want), you could use DBD::CSV (or in-memory tables with DBD::AnyData) and use SQL to JOIN the two tables looking for your desired results.. Something like (note this example is only cases where the id exists in both files--excercise for reader to use LEFT JOIN for the other cases):
my $sql = <<EOF; SELECT t1.id, SUM(t2.hrs_expected) - SUM(t1.hrs_expected) as hrs_expected_diff FROM file1 as t1 JOIN file2 as t2 ON t2.id = t1.id GROUP BY t1.id HAVING SUM(t1.hrs_expected) != SUM(t2.hrs_expected) EOF