On Tue, 2008-10-07 at 21:09 +0100, Rob Dixon wrote: > Incorrect, delete does not remove array elements: > > > > $ perl -le'use Data::Dumper; my @a = "a".."d"; delete $a[1]; print > > Dumper [EMAIL PROTECTED]' > > $VAR1 = [ > > 'a', > > undef, > > 'c', > > 'd' > > ]; > > According to exists() it does.
Data::Dumper does not test for exists, it only tests defined. Therefore it reports that !exists as undef. #!/usr/bin/perl use strict; use warnings; use Data::Dumper; $Data::Dumper::Sortkeys = 1; $Data::Dumper::Indent = 1; $Data::Dumper::Maxdepth = 0; my @a = 'a' .. 'd'; delete $a[1]; print "\nFor each element of [EMAIL PROTECTED]"; for my $s ( @a ){ print "$s\n"; } print "\nFor each index of [EMAIL PROTECTED]"; for my $i ( 0 .. $#a ){ if( exists $a[$i] ){ if( defined $a[$i] ){ print "element $i exists and defined: $a[$i]\n"; }else{ print "element $i exists but not defined\n"; } }else{ print "element $i does not exists\n"; } } print "\nData::Dumper ", Dumper [EMAIL PROTECTED]; __END__ -- Just my 0.00000002 million dollars worth, Shawn Linux is obsolete. -- Andrew Tanenbaum -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/