http://www.perlmonks.org?node_id=160817


in reply to Re: undef'ing @arrays caveat
in thread undef'ing @arrays caveat

True, and in fact if you undef @array the effect is identical. See my node, above.

Replies are listed 'Best First'.
Re: Re: Re: undef'ing @arrays caveat
by Juerd (Abbot) on Apr 20, 2002 at 23:01 UTC

    True, and in fact if you undef @array the effect is identical.

    Try using Devel::Peek. undef @array sets MAX to -1, @array = () does not. Or use Benchmark and find out that undef @array is about twice as fast. The effect is the same, but internally, there's something entirely different going on.

    - Yes, I reinvent wheels.
    - Spam: Visit eurotraQ.
    

      Granted. But besides the speed issue, the result is effectively the same.

      In the case of undef @array, @array does not actually get undefined (i.e., it still exists), just emptied, however more efficiently than with @array = ().

        @array does not actually get undefined

        undef can only un-define scalars, because only scalars can be not-defined. Hashes and arrays are emptied, subs and globs are destroyed. I think the manual is not clear enough about this.

        - Yes, I reinvent wheels.
        - Spam: Visit eurotraQ.