%a = (lunes=>1, martes=>2, miercoles=>3, jueves=>4, viernes=>5, sabado=>6, domingo=>7 );
delete $a{lunes};
if (exists $a{lunes}) { ... } # FALSE
La función exists devuelve TRUE si el
elemento especificado (de un hash o un array) ha sido inicializado,
incluso si el valor correspondiente es undef.
Una diferenciación interesante, especialmente cuando se trata de hashes es entre existencia y definición:
%a = (lunes=>1, martes=>2, miercoles=>3, jueves=>4, viernes=>5, sabado=>6, domingo=>7 );
$a{lunes} = undef;
if (defined($a{lunes})) { ... } # FALSE
if (exists($a{lunes})) { ... } # TRUE
También se puede pasar como argumento de delete
un trozo del hash (para saber más sobre
trozos de hashes vea la sección 1.14.4):
delete @a{martes, miercoles}; # dos dias laborales menos!