DanielSpaniel has asked for the wisdom of the Perl Monks concerning the following question:
This question is a follow on question to a previous one at http://www.perlmonks.org/?node_id=1057587, from a number of days back. I did post this follow-up query in that post, but I think the post is probably not being viewed any more.
So, the original question was to do with passing arguments from a script to a module; I can now get that bit working. However, the solution seems to introduce another problem, which I don't quite understand.
The test module, and test script, are shown below:
The moduleThe scriptpackage my_testmodule; $VERSION = '1.00'; use strict; use warnings; our $gMessage; undef our @list; use Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(@list); sub import { my $class = shift; $gMessage = shift; print "Yep, I'm in here ...\n\n"; my_sub(); } # &my_sub; sub my_sub { print "$gMessage\n\n" if ($gMessage); push (@list,'oranges','lemons','apples'); } 1;
#!/usr/bin/perl use strict; use warnings; use my_testmodule 'xyz'; print "$list[0]\n\n"; exit;
Previously, before trying to pass the module anything at all, and thus without the import sub, I would be able to read @list, defined in the module, in test.pl.
However, now, with the import sub, I'll get an error when running test.pl, "Global symbol "@list" requires explicit package name at test.pl line 8."
I don't see why this should be, seeing as it appears to be defined and exported properly in the module; in fact nothing to do with @list has changed.
I did also try referencing $list with the package name, but that doesn't work either.
Any help/suggestions would be much appreciated. Thanks!
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Variable Scope
by jdporter (Paladin) on Oct 10, 2013 at 00:39 UTC | |
by DanielSpaniel (Scribe) on Oct 10, 2013 at 01:41 UTC |