Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^4: Global variables in Perl

by taioba (Novice)
on Jun 04, 2010 at 20:11 UTC ( #843197=note: print w/ replies, xml ) Need Help??


in reply to Re^3: Global variables in Perl
in thread Global variables in Perl

Well, I actually copied and pasted your code and still got those errors. I updated Exporter and even tried to use Exporter::Lite and got the same thing. If I try 'use strict qw(vars refs)' for instance, it warns 'Bareword found in conditional...' but it works fine aside from that. I'll try to run it in a Unix based machine and see what happens. At any rate, many thanks!


Comment on Re^4: Global variables in Perl
Re^5: Global variables in Perl
by ikegami (Pope) on Jun 04, 2010 at 20:18 UTC

    It could be that you're not executing the script you think you are executing, or you're not using the module you think you are using.

    Please provide the output of the following:

    perl -wle'use ConfigThisJunk; print $INC{"ConfigThisJunk.pm"};' cat ConfigThisJunk.pm # Or whatever the previous line printed cat script.pl # Or whatever your script is called. perl script.pl # Or whatever your script is called.

    Or on a Windows build:

    perl -wle"use ConfigThisJunk; print $INC{'ConfigThisJunk.pm'};" type ConfigThisJunk.pm # Or whatever the previous line printed type script.pl # Or whatever your script is called. perl script.pl # Or whatever your script is called.

      OK, here you go. A few adjustments: ConfigThisJunk.pm is actually ExportScalar.pm and the script name is ImportTest.pl. The package is in the folder 'D:/Marcos/Perl/MSB/SS' in my Windows machine. Hence, your line got modified to:

       perl -wle"use lib 'D:/Marcos/Perl/MSB'; use SS::ExportScalar; print $INC{'SS/ExportScalar.pm'};"

      and that resulted in

      D:/Marcos/Perl/MSB/SS/ExportScalar.pm

      And then the results of the type statements:

      type ExportScalar.pm use strict; use warnings; use Exporter; our @ISA = qw( Exporter ); our @EXPORT_OK = qw( DEBUG ); our $DEBUG = 1; sub DEBUG { if (@_) { $DEBUG = shift; } return $DEBUG; } 1;
      type ImportTest.pl #!/usr/bin/perl -w use strict; use warnings; use lib 'D:/Marcos/Perl/MSB'; use SS::ExportScalar qw( DEBUG ); my $x = 123; print("debug: x is $x\n") if DEBUG;

      Now I execute it:

      perl ImportTest.pl Bareword "DEBUG" not allowed while "strict subs" in use at ImportTest. +pl line 7. Execution of ImportTest.pl aborted due to compilation errors.

      Now, I change the strict statement in ImportTest.pl:

      type ImportTest.pl #!/usr/bin/perl -w use strict qw (vars refs); use warnings; use lib 'D:/Marcos/Perl/MSB'; use SS::ExportScalar qw( DEBUG ); my $x = 123; print("debug: x is $x\n") if DEBUG;
      perl ImportTest.pl Bareword found in conditional at ImportTest.pl line 7. debug: x is 123

      X:^P

        You're missing package SS::ExportScalar;, so the script never imports DEBUG, so DEBUG is not declared in the script, so it's a bareword, so strict throws an exception.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (14)
As of 2014-07-25 19:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (174 votes), past polls