in reply to Prohibiting redeclaration of lexicals in inner scope

That's a feature, not a bug. Do you have a specific reason why it should be disallowed?

----
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

  • Comment on Re: Prohibiting redeclaration of lexicals in inner scope

Replies are listed 'Best First'.
Prohibiting redeclaration of lexicals in inner scope
by JohnLon (Initiate) on Mar 31, 2003 at 15:49 UTC
    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.

      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.

      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."