Hi list, While tracking some mysteries in a script behavior I hit an interesting feature. "DELETE hash element" seems to create one, when it's missing. It may be normal and well known in the Perl milieu, but new to me.
Here is a test script, a baby scenario of new records updating an archive - - - #!/usr/local/bin/perl -w # delete hash element creates one use strict; $\ = "\n"; my %H=(); my ($ip,$nam,@nams); $H{'218.212.233.69'}={'cat.com',1,'dog.br',1}; $H{'59.40.24.92'}{unknown}=1; $H{'81.209.148.120'}={'sea.shell.nu',1,'news.cnn.cn',1}; $H{'221.11.133.66'}{'cow.nl'}=1; print ".. new records"; map{print "$_: ",join ', ',sort keys %{$H{$_}}}sort keys %H; print "\n.. update archive"; while (<DATA>){chomp; $_ || last; print; ($ip,$nam) = /^([\d.]+) #(.*)$/; exists $H{$ip} || next; @nams = split / /,$nam; map{exists $H{$ip}{$_} && delete [EMAIL PROTECTED]; # trim duplicate names push @nams,keys %{$H{$ip}}; # append new names delete $H{$ip}; # delete $H{$ip}{any}; # create $H{$ip} print " -> $ip #",join ' ',sort @nams; # updated archive record } print "\n.. new records trimmed"; map{print "$_: ",join ', ',sort keys %{$H{$_}}}sort keys %H; __END__ 59.40.24.92 #unknown 66.94.234.13 #yahoo.com 218.212.233.69 #cat.com mouse.org 221.11.133.66 #horse.uk - - - normal output: . new records 218.212.233.69: cat.com, dog.br 221.11.133.66: cow.nl 59.40.24.92: unknown 81.209.148.120: news.cnn.cn, sea.shell.nu . update archive 59.40.24.92 #unknown -> 59.40.24.92 #unknown 66.94.234.13 #yahoo.com 218.212.233.69 #cat.com mouse.org -> 218.212.233.69 #cat.com dog.br mouse.org 221.11.133.66 #horse.uk -> 221.11.133.66 #cow.nl horse.uk . new records trimmed 81.209.148.120: news.cnn.cn, sea.shell.nu - - - output when the statement "delete $H{$ip}{any};" is active: same as above up to .. . new records trimmed 218.212.233.69: 221.11.133.66: 59.40.24.92: 81.209.148.120: news.cnn.cn, sea.shell.nu - - - It looks as if Perl processes DELETE as follows: 1- create the missing element 2- delete the terminal element, as requested 3- leave behind the higher structure The moral: leave the dead alone, for they haunt you. Cheers