Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^2: Sharing Across Packages

by mikasue (Friar)
on Sep 29, 2006 at 22:37 UTC ( #575615=note: print w/ replies, xml ) Need Help??


in reply to Re: Sharing Across Packages
in thread Sharing Across Packages

In the ABOUT package, how to I include the main package.
I am getting the following error when I try this $main::MW.

Can't locate main.pm in @INC (@INC contains: . C:/Perl/lib C:/Perl/sit +e/lib) atline 8.
I used Data Dumper and the variable is UNDEF.

use main?????
use bpp.pl (the main file name)????

thanks


Comment on Re^2: Sharing Across Packages
Download Code
Re^3: Sharing Across Packages
by polettix (Vicar) on Sep 30, 2006 at 00:41 UTC
    You don't need to include anything, packages are always there for you! By default, you *are* in package main unless you specify otherwise. An example will be hopefully useful:
    poletti@PolettiX:~/sviluppo/perl$ nl mikasue.pl 1 #!/usr/bin/perl 2 use strict; 3 use warnings; 4 { # scope reduction 5 our $MW = "Hello, mikasue!"; 6 print "\$MW is '$MW'\n"; 7 print "Current package is ", __PACKAGE__, "\n"; 8 print "\$main::MW is '$main::MW'\n"; 9 } # end of "our" scope 10 package Whatever; 11 no strict; # note: no strict here! 12 print "\$MW is '$MW'\n"; 13 print "Current package is ", __PACKAGE__, "\n"; 14 print "\$main::MW is '$main::MW'\n"; poletti@PolettiX:~/sviluppo/perl$ perl mikasue.pl Name "Whatever::MW" used only once: possible typo at mikasue.pl line 1 +2. $MW is 'Hello, mikasue!' Current package is main $main::MW is 'Hello, mikasue!' Use of uninitialized value in concatenation (.) or string at mikasue.p +l line 12.$MW is '' Current package is Whatever $main::MW is 'Hello, mikasue!'
    Note that you have two warnings regarding line 12. The first one is given during the compilation phase, and refers to the misterious "Whatever::MW" variable. This stems from the fact that, when not using strict, every variable you use actually is the corresponding package variable (in the current package). In line 9 we're entering package "Whatever", so there you are. The second warning happens at run time, when you try to print the content of this variable, that is undefined.

    As you can see (line 7), by default we're in package main.

    Flavio
    perl -ple'$_=reverse' <<<ti.xittelop@oivalf

    Don't fool yourself.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (11)
As of 2014-07-30 14:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (234 votes), past polls