in reply to Comparing hash data

It seems that the first problem is to match the keys in the seperate hashes and then compare the contents so something like this might work (untested)
foreach my $sqlkey (keys %sql){ foreach my $csvkey (keys %csv){ next unless $csvkey =~ /$sqlkey\z/; # match end of sqlkey # code to compare $csv{$csvkey} & $sql{$sqlkey} and do other t +hings } }
Of course, this is an O(m*n) operation for m keys in %sql and n keys in %csv. If %sql and %csv are very large, this might be a prohibative operation. If this is true, you might want to map the keys of %csv to the keys of %sql (assuming they are one to one) and then do a straight comparison.
my %sqltocsv = qw(EMP_NAME NAME EMP_JOB JOB ...); foreach $sqlkey (keys %sql){ if($sql{$sqlkey} eq $csv{$sqltocsv{$sqlkey}}){ # do things } }

PJ
use strict; use warnings; use diagnostics;