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

Read again. I said the first and second are the same, not the first and third. Your snippet even supports me because it says defined shouldn't be used on arrays.

Replies are listed 'Best First'.
Re^5: Check if array is null
by Limbic~Region (Chancellor) on Oct 06, 2004 at 17:00 UTC
    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

      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