On Thursday 20 May 2010 13:52:58 HACKER Nora wrote:
> Hello,
>
> I have a programme for database backup / recovery / some other tasks
> with several modes (e.g. <b>ackup etc.) in wich a certain function is
> called. In this function I do a SWITCH, depending on the mode that the
> main programme is started with. In one of the cases of SWITCH (e.g.
> <r>ecovery) I use a variable which may not be passed when calling the
> function because it is not set for that mode. Nevertheless I get an
> error when trying to run the script ("Global symbol XXX requires
> explicit package name..."). My workaround so far was to declare that
> variable immediately before calling the function (empty / <zero> / "")
> and passing it thus although it isn't needed actually.
>
From a cursory look at your program, it seems that you can just set up $mode
as a global variable, and keep it at that instead of just passing it around.
Alternatively, maybe you'd like to define a class and keep the mode variable
there as a property of the class' instances.
> Script (concentrated):
> =================
>
> #!/usr/bin/perl
> use strict;
> use warnings;
>
> my $mode = ARGV[0];
That should be "my $mode = $ARGV[0];" or preferably "my $mode = shift(@ARGV);"
or "my ($mode) = @ARGV;".
Regards,
Shlomi Fish
--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
"The Human Hacking Field Guide" - http://shlom.in/hhfg
God considered inflicting XSLT as the tenth plague of Egypt, but then
decided against it because he thought it would be too evil.
Please reply to list if it's a mailing list post - http://shlom.in/reply .
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/