tall_man has asked for the wisdom of the Perl Monks concerning the following question:
I recently ran into something strange with the Tk package and I wondered if anyone has an explanation. Somehow, Tk helps another package that is not an Exporter to export its constants.
Here is the example:
This package is trying to export some constants, but it fails to inherit from Exporter, so you would think it could never work.
This program will try to use the constants:# Constants.pm package Constants; use constant XX => 0; use constant YY => 1; our @EXPORT = qw(XX YY); 1;
Here is the strange thing. With the "use Tk" in place, the program works and prints "sum =3". Without it, the program fails with the expected 'Bareword "XX" not allowed' messages. This is perl version 5.6.1.# caller.pl use strict; use warnings; use Tk; use Constants; print "sum =",XX + YY,"\n";
Why does Tk have this accidental side-effect? I think it may have something to do with the following line in the Tk.pm header:
Does "use base" have side-effects on other packages, causing them to become subclasses of the base list too? This seems quite strange and a potential source of errors. Any ideas?use base qw(Exporter DynaLoader);
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Tk helps another package to export?
by PodMaster (Abbot) on Jan 30, 2003 at 10:19 UTC | |
by tye (Sage) on Jan 30, 2003 at 15:52 UTC | |
|
Re: Tk helps another package to export?
by demerphq (Chancellor) on Jan 30, 2003 at 11:16 UTC | |
|
Re: Tk helps another package to export?
by batkins (Chaplain) on Jan 30, 2003 at 01:13 UTC | |
by demerphq (Chancellor) on Jan 30, 2003 at 10:41 UTC | |
by IlyaM (Parson) on Jan 30, 2003 at 11:36 UTC | |
by demerphq (Chancellor) on Jan 31, 2003 at 10:22 UTC | |
by tall_man (Parson) on Jan 30, 2003 at 01:21 UTC | |
|
Re: Tk helps another package to export?
by tall_man (Parson) on Jan 30, 2003 at 01:07 UTC |