in reply to Throw compilation error(or warning) if duplicate keys are present in hash

What about tie?

#!/usr/bin/perl { package AssignOnce; use strict; use warnings; use Carp (); use Tie::Hash; use parent -norequire => 'Tie::StdHash'; # why, oh why, is Tie::St +dHash hidden in Tie::Hash? sub STORE { my ($self,$key,$value)=@_; if (exists $self->{$key}) { Carp::carp("Overwriting hash key '$key', old value: '$self +->{$key}', new value: '$value'"); } $self->SUPER::STORE($key,$value); } } use strict; use warnings; use Data::Dumper; our %h; tie %h,'AssignOnce'; %h=( one => 1, two => 2, one => 3, ); print Dumper(\%h);

Result:

Overwriting hash key 'one', old value: '1', new value: '3' at tie.pl l +ine 29 $VAR1 = { 'one' => 3, 'two' => 2 };

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)