Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

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)????


Comment on Re^2: Sharing Across Packages
Download Code
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 the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (4)
As of 2015-11-27 03:42 GMT
Find Nodes?
    Voting Booth?

    What would be the most significant thing to happen if a rope (or wire) tied the Earth and the Moon together?

    Results (717 votes), past polls