Ratazong has asked for the wisdom of the Perl Monks concerning the following question:
Dear monks,
I am experimenting with perl modules, and am stuck: I have the package p2 (see below), and am calling the subs saveP and loadP from my main script. When loading and evaluating the data, I get the error message
Variable "$gold" is not available at (eval 15) line 1, <GEN7> line 1.I am confused: why is $gold visible in saveP (when I write it), but not in the eval?
And how can/should I resolve this?
Please enlighten me! Rata
In my main Tkx-script - called from a menu:
sub saveP{ p2::saveP(); } sub loadP{ p2::loadP(); }
My package p2:
package p2; use strict; use warnings; use Data::Dumper; use FileHandle; my $gold = 5000; 1; #==================================================================================================== sub saveP { my $savefile = new FileHandle("xxx.ptysav", "w"); $savefile->print("\$gold = $gold;\n"); close ($savefile); } #==================================================================================================== # note: eval on files (or strings) is dangerous - see the reply of afoken below # https://www.perlmonks.org/?node_id=11161417 sub loadP { my $savefile = new FileHandle("xxx.ptysav", "r"); my $lines = join("",($savefile->getlines())); my $result = eval $lines; # <- here is the eval close ($savefile); }
The save-file is as expected: $gold = 5000;
|
---|