http://qs321.pair.com?node_id=11135292

nysus has asked for the wisdom of the Perl Monks concerning the following question:

Monks, I was toying around with importing/requiring to improve my aptitude with them. So I have this package:
#! /usr/bin/env perl package A; require Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw (sub1 $var); our %EXPORT_TAGS = (all => [ qw(sub1 $var) ]); our $var = 7; sub sub1 { print "this\n"; } 1;

I want to use require to import the $var global. I try this:

#! /usr/bin/env perl use strict; use warnings; use lib '.'; require A; A->import (':all'); sub1(); print $var . "\n";

This script throws Global symbol "$var" requires explicit package name (did you forget to declare "my $var"?).

But I have no such error with Use A like so:

#! /usr/bin/env perl use strict; use warnings; use lib '.'; use A ':all'; print $var . "\n";

So I have a gap in my knowledge. I'm not sure why the second way works and the first doesn't. Any guidance is appreciated. Thanks!

$PM = "Perl Monk's";
$MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate Priest Vicar";
$nysus = $PM . ' ' . $MCF;
Click here if you love Perl Monks