Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re: map and undef - odd behaviour with an array of arrays

by eyepopslikeamosquito (Chancellor)
on Dec 22, 2012 at 08:38 UTC ( #1009984=note: print w/replies, xml ) Need Help??

in reply to map and undef - odd behaviour with an array of arrays


use Data::Dumper; $x[0]=[0];map{undef $_}(@x);print "still defined\n" if defined @x; print Dumper(\@x);
defined(@array) is deprecated at line 2. (Maybe you should just omit the defined()?) still defined $VAR1 = [ undef ];
I trust that clarifies what is going on. That is, your array contains a single element with the value undef. Note that an array containing a single element with an undef value is not undef, not even false in scalar context. To be false in scalar context, the array needs to be empty.

Oh, and please heed the deprecated warning and replace "if defined @x" with simply "if @x" (see defined for why).

Replies are listed 'Best First'.
Re^2: map and undef - odd behaviour with an array of arrays
by Melly (Hermit) on Dec 22, 2012 at 08:45 UTC

    But why did map{undef $_}(@x) behave differently than undef @x?

    Edit to add - oh, I'm being stupid - it's undefining each element rather than @x. When I was testing this, for some reason I concluded that perl -e "@x=qw(a);map{undef $_}(@x);print 1 if defined @x;" didn't print 1 (but it does).

    One of those days...

    map{$a=1-$_/10;map{$d=$a;$e=$b=$_/20-2;map{($d,$e)=(2*$d*$e+$a,$e**2 -$d**2+$b);$c=$d**2+$e**2>4?$d=8:_}1..50;print$c}0..59;print$/}0..20
    Tom Melly, pm (at) cursingmaggot (stop) co (stop) uk

      But why did map{undef $_}(@x) behave differently than undef @x?
      "undef @x" empties the array while "map{undef $_}@x" sets each element in the array to the value undef. Since your array had one element in it, that element was not deleted, rather its value was set to undef.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1009984]
[hippo]: So if you don't drink as much milk and not as often you are said to drink less milk on fewer days. Confusing, eh?
[Eily]: same as many/much, few/little
[Discipulus]: so my 'less' usage sounded not so correct? 'fewer' was more appropriate? i take a note too
Discipulus $ENV{PAGER}='fewer '
[Corion]: Discipulus: Hahahaa! ;)
[Corion]: This would be a great April fools joke, since it certainly makes sense to show fewer pages on screen :)

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (5)
As of 2018-01-23 09:12 GMT
Find Nodes?
    Voting Booth?
    How did you see in the new year?

    Results (242 votes). Check out past polls.