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

When I want to pass a variable that's local to my script into a module, I pass it as an argument to a subroutine. In your case, it would be an anonymous sub in the array-of-hashrefs:

package check_module; use warnings; use strict; use Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(@checks); our @checks = ( { name => 'Anybody home?', #script => 'qq/echo $home_dir/', script => sub { `echo $_[0]` }, }, ); 1; __END__
use warnings; use strict; use lib '.'; use check_module; my $home_dir = '/home/mine'; for my $check ( @checks ) { chomp ( my $script_out = $check->{script}->($home_dir) ); print "Checking $check->{name}\n\t=> '$script_out'\n"; } __END__
__OUTPUT__ Checking Anybody home? => '/home/mine'