I'm sorry, but I'm not inclined to work through your code explaining all the problems. The biggest error is that nested hashes don't work like that. Here is a complete revision that does what you ask.
use strict;
use warnings;
my %ref_data;
open my $fh, '<', 'Ref.txt' or die $!;
while (<$fh>) {
chomp;
my ($occurname, $tempname, @data) = split;
$ref_data{$occurname} = \@data;
}
open $fh, '<', 'New.txt' or die $!;
while (<$fh>) {
my ($occurname, $tempname, @data) = split;
my $ref_data = $ref_data{$occurname};
unless ($ref_data and grep($data[$_] != $ref_data->[$_], 0..$#data) == 0) {
print "$occurname has mismatch property\n";
}
}
output
CELLA/I0/I2 has mismatch property