in reply to Re: "my" declaration problem
in thread "my" declaration problem

Repeated declarations of the same variable in the same scope make no sense.
In bad style and obfuscated, sure, but is it nonsensical? Redeclaration and reassignment are not the same when destructors or side-effects are involved. I can imagine this kind of situation arising with "templated" code where sections are copy-paste or somesuch. Job security FTW!

Replies are listed 'Best First'.
Re^3: "my" declaration problem
by LanX (Saint) on Apr 25, 2017 at 20:06 UTC
    OK ... Please provide an example where the code is not broken.

    Cheers Rolf
    (addicted to the Perl Programming Language and ☆☆☆☆ :)
    Je suis Charlie!

      The following code might have been autogenerated. It's not even really confusing and it works exactly as advertised:

      use Guard; use File::Temp 'tempfile'; sub frobnicate { my ($fh,$name) = tempfile(); print {$fh} "Hello"; close $fh; my $atexit = guard { print "Removing '$name'"; unlink $name; }; my ($fh,$name) = tempfile(); print {$fh} "World"; close $fh; my $atexit = guard { print "Removing '$name'"; unlink $name; }; } print "Frobnicating"; frobnicate(); print "Frobnicating done, and cleaned up"; __END__ Frobnicating Removing 'C:\Users\Corion\AppData\Local\Temp\JPUN_wEVOo' Removing 'C:\Users\Corion\AppData\Local\Temp\eUuaGV_5sj' Frobnicating done, and cleaned up

      Of course, there is no way to get at the first instances of $fh, $name and $atexit.

      And if I were autogenerating that code, why would I bother with naming the variables $name1, $name2 etc. when they are just for later customization anyway?

        > if I were autogenerating that code ...

        Or not using my at all or even better putting each snippet into a block.

        Cheers Rolf
        (addicted to the Perl Programming Language and ☆☆☆☆ :)
        Je suis Charlie!