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


in reply to Module breaks when declaring variables

I think the module requires perl 5.6, whereas you are using an earlier version. 'our' was introduced in 5.6.

Replies are listed 'Best First'.
Re: Re: Too many modules
by Fastolfe (Vicar) on Dec 13, 2001 at 03:12 UTC
    And for the benefit of others, a well-written module that makes use of version-specific language elements should probably declare this in their module:
    require 5.6.0;
    This makes tracking down these types of problems a lot easier.
Re: Re: Too many modules
by jryan (Vicar) on Dec 13, 2001 at 03:39 UTC
    And to fix the line, if upgrading to perl 5.6.1 is an issue, you can change this:
    our(@ISA, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD) = ();
    to this:
    use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK $AUTOLOAD);
    or this:
    no strict; (@ISA, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD) = (); # You need to do all of your work with these variables here # Its best not to use this method. use strict;

    Update:Fixed examples, thanks to reply from tye.

      Minor issue: the second line of your first example is not needed as it just sets those variables to have the same values that they already had.

      Major issue: You might as well delete all three lines of your last example as it does nearly nothing and none of the minor things that it does do have any use that I can see. The first example allows you to make use of the declared variables further down in the file. That is what you want. You last example doesn't do that. If you used your last example then you'd get errors in the code further down in the file that made use of those variables (and if there is no code further down that makes use of those variables, then you might as well drop them from the declaration).

              - tye (but my friends call me "Tye")
        Right, that makes sense. Although the no strict allows the statement to pass, the variables are still never declared (just used), and thus the compiler will still clunk the code with a wooden spoon.