### Module breaks when declaring variables

 on Dec 13, 2001 at 02:08 UTC 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 Replies are listed 'Best First'. 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; [download] 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) = ();
[download]
to this:
use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK $AUTOLOAD); [download] 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;
[download]

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

Create A New User
Node Status?
node history
Node Type: perlquestion [id://131438]
Approved by root
help
Chatterbox?
 [Corion]: I have Thursday and Friday off, so then I might get to converting the rough outlines to more articles ;) [Corion]: But currently, most of the modules are web-related and I don't like to publish two web articles in a row [Corion]: Maybe I should do the Filter::Simple release on the next weeked - this would give me one more article to milk from this theme

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (8)
As of 2017-04-24 08:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?
I'm a fool:

Results (437 votes). Check out past polls.