Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

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 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 (the main file name)????


Replies are listed 'Best First'.
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 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 Name "Whatever::MW" used only once: possible typo at 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.

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

    Don't fool yourself.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://575615]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (5)
As of 2017-02-22 08:01 GMT
Find Nodes?
    Voting Booth?
    Before electricity was invented, what was the Electric Eel called?

    Results (325 votes). Check out past polls.