in reply to (tye)Re: Swapping object variables
in thread Swapping object variables

I did consider delete, except in this particular case (where everthing is ".="), undef/delete causes "Use of uninitialized variable" warnings, unless unset $^W, which I don't like doing, or use 5.6's lexical warning pragmas, and a CPAN author can't really mandate 5.6.

Thanks though.

Replies are listed 'Best First'.
(tye)Re2: Swapping object variables
by tye (Sage) on Jan 24, 2002 at 21:05 UTC

    One would think so, eh? But I actually tested that before I posted:

    #!/usr/bin/perl -w use strict; my %h; $h{okay} .= "Hello"; # No warning (for me, at least) warn "----\n"; $h{warn}= $h{warn} . "Hello"; # Gives a warning
    produces
    ---- Use of uninitialized value in concatenation (.) at line 6.
    But perhaps this isn't true in some older versions of Perl (I only tested v5.6.0).

            - tye (but my friends call me "Tye")
      My understanding is that the operators such as += .= -= are immune from uninitialized warnings whereas their longwinded counterparts ($x = $x + 1) are not. After beating myself about the head trying to figure out exactly what will trigger this warning, I posted a little quiz about my findings.

      -Blake