Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Module breaks when declaring variables

by Anonymous Monk
on Dec 13, 2001 at 02:08 UTC ( #131438=perlquestion: print w/ replies, xml ) Need Help??
Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

These days everything has modules. Mountains of modules. Oceans of modules. I have so many installed here that i can hardly keep track of them, however this one infolves a seemingly widely used one, which shall remain nameless for the time being due to the fact that it has no bearing on the situation. Runtime error on a perl src requiring the module.
--- Begin auctual error message ---
Can't modify subroutine entry in scalar assignment at D:\Path\to\another\useless.pm line 3, near ");"
--- End auctual error message ---
Now, line 3 in the program states the following:
our(@ISA, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD) = ();
Now, is line 3 the problem? or is this a problem elsewhere?

Thanks for the help.
Mr. I-HATE-MODULES-AND-(SOMETIMES)-LIBRARIES

Comment on Module breaks when declaring variables
Re: Too many modules
by kwoff (Friar) on Dec 13, 2001 at 02:31 UTC
    I think the module requires perl 5.6, whereas you are using an earlier version. 'our' was introduced in 5.6.
      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.
      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")

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://131438]
Approved by root
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (6)
As of 2014-09-01 22:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (17 votes), past polls