my %data_map; foreach (@data) { my ($class, $stamp) = split /\!/, $_; $data_map{$class} = $stamp; } foreach my $elem (@ref) { my ($class, $subcalss, $stamp) = split /:\|/, $elem; push @set, "$class:$subclass" if $data_map{$class} != $stamp; }