Сделать $x
лексическим для файла пакета , а не для отдельной подпрограммы:
package MyModule;
use strict;
use Exporter;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
$VERSION = 1.00;
@ISA = qw(Exporter);
@EXPORT = qw(func1);
my $x;
sub func1 {
$x = shift;
print $x;
func2();
}
sub func2 {
print $x;
}
Но этот пример не имеет смысла.Более разумным примером будет определение лексического дескриптора файла, который будет напечатан несколькими подпрограммами в пакете:
package PoorManLogger;
my $fileHandle;
sub initialize { open $fileHandle, '<', +shift }
sub alert { print $fileHandle 'ALERT: ', @_, "\n"; }
sub debug { print $fileHandle 'DEBUG: ', @_, "\n"; }
sub close { close $fileHandle; } # Though this isn't technically needed.
1;