Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Variable declared in script, used by module, and used in script (updated)

by AnomalousMonk (Chancellor)
on May 16, 2018 at 17:28 UTC ( #1214673=note: print w/replies, xml ) Need Help??


in reply to Variable declared in script, used by module, and used in script

Quick and dirty (Windows 7, Perl 5.8.9):
Module check_module.pm:

package check_module; use Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(@checks); our @checks = ( { name => 'Anybody home?', script => 'qq/echo $home_dir/', }, ); 1;
Note esp. that  'qq/echo $home_dir/' is single-quoted in the .pm file.

Script:

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: 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.)

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:  <%-{-{-{-<

Replies are listed 'Best First'.
Re^2: Variable declared in script, used by module, and used in script
by ExReg (Priest) on May 16, 2018 at 17:47 UTC

    Many thanks. I don't know why I couldn't remember eval. That does the trick.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1214673]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (3)
As of 2018-07-22 01:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?















    Results (451 votes). Check out past polls.

    Notices?