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);
In reply to Tk helps another package to export? by tall_man
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |