in reply to Re^4: Check if array is null
in thread Check if array is null

ikegami,
Ok - so I can't read ;-) I still get conflicting results:
#!/usr/bin/perl use strict; use warnings; my @array = (undef, undef); pop @array; pop @array; print "foo\n" if defined @array; __END__ defined(@array) is deprecated at foo.pl line 7. (Maybe you should just omit the defined()?) foo

Cheers - L~R

Replies are listed 'Best First'.
Re^6: Check if array is null
by ikegami (Patriarch) on Oct 06, 2004 at 17:12 UTC

    That's interesting! It seems defined returns true if there once was data in the array.

    my @array = (); print defined(@array)?1:0, $/; # 0 print scalar(@array)?1:0, $/; # 0 push(@array, 'bla'); pop(@array); print defined(@array)?1:0, $/; # 1 print scalar(@array)?1:0, $/; # 0 undef(@array); print defined(@array)?1:0, $/; # 0 print scalar(@array)?1:0, $/; # 0
      ikegami,
      That makes sense to me (DWIM). If I create a scalar $foo initially as 'bar' and then change it to '', it is an empty string but it is still defined. If on the other hand, I undef $foo it should no longer be defined. Just change the sigil - though it has been deprecated for arrays and hashes as has been noted.

      Cheers - L~R