Quick and dirty (Windows 7, Perl 5.8.9):
Module check_module.pm:
Note esp. that 'qq/echo $home_dir/' is single-quoted in the .pm file.package check_module; use Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(@checks); our @checks = ( { name => 'Anybody home?', script => 'qq/echo $home_dir/', }, ); 1;
Script:
(Update: The trick here is to eval the $check->{script} string from the module in the scope of the script in which $home_dir is declared and initialized.)c:\@Work\Perl\monks\ExReg>perl -wMstrict -le "use strict; use warnings; use check_module; my $home_dir = '/home/mine/'; for my $check ( @checks ) { print qq{Checking $check->{name}}; my $evaled_script = eval qq{$check->{script}}; print `$evaled_script`; } " Checking Anybody home? /home/mine/
Update 1: If you had included the use warnings; use strict; statements in the .pm module (after the package statement), you would have had a slightly earlier and possibly slightly more informative notification that something was going sideways.
Update 2:
... [a] system that cannot use CPAN ...See Yes, even you can use CPAN.
Give a man a fish: <%-{-{-{-<
In reply to Re: Variable declared in script, used by module, and used in script (updated)
by AnomalousMonk
in thread Variable declared in script, used by module, and used in script
by ExReg
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |