in reply to Re: Prohibiting redeclaration of lexicals in inner scope
in thread Prohibiting redeclaration of lexicals in inner scope

Not suggesting its a bug - but I would definitely like to enforce this feature in my perl code is there is some way to achieve this.

I have just wasted 2 hours tracking down a bug that was caused by this flexibility and have had similar experiences in the past.

In C++ and Java its disallowed/disallowable - presumably cos its considered bad form or more likely to be a typo than genuine code.

  • Comment on Prohibiting redeclaration of lexicals in inner scope

Replies are listed 'Best First'.
(jeffa) 3Re: Prohibiting redeclaration of lexicals in inner scope
by jeffa (Bishop) on Mar 31, 2003 at 15:59 UTC
    Perl is not C++. Perl is not Java. Perl is more like C, and C allows this behavior:
    #include <stdio.h> int main() { int a = 1; { int a = 5; printf("inside a = %d\n", a); } printf("outside a = %d\n", a); }
    Personally, i think you might be wasting your time with this. I am not being mean, but maybe you should have coded this particular program in Java or C++. Use the right tool for the right job, don't change the tool because you may be using it for the wrong job. On another note, anytime i find myself wasting hours hunting down a bug, once i find it, i blame myself. ;)

    jeffa

    L-LL-L--L-LL-L--L-LL-L--
    -R--R-RR-R--R-RR-R--R-RR
    B--B--B--B--B--B--B--B--
    H---H---H---H---H---H---
    (the triplet paradiddle with high-hat)
    
    A reply falls below the community's threshold of quality. You may see it by logging in.
Re: Prohibiting redeclaration of lexicals in inner scope
by hardburn (Abbot) on Mar 31, 2003 at 15:54 UTC

    I search CPAN for lexical and didn't find anything that might do the job. I'm sure it would be possible to write a source code filter for this (but you'll need perl 5.8.0).

    ----
    I wanted to explore how Perl's closures can be manipulated, and ended up creating an object system by accident.
    -- Schemer

    Note: All code is untested, unless otherwise stated

      FYI, I've used source filters in 5.6*

      -Lee

      "To be civilized is to deny one's nature."