Acme-RunDoc
view release on metacpan or search on metacpan
lib/Acme/RunDoc.pm view on Meta::CPAN
BEGIN {
$Acme::RunDoc::AUTHORITY = 'cpan:TOBYINK';
$Acme::RunDoc::VERSION = '0.002';
}
# 'undef' is Text::Extract::Word's default filter, and probably the only
# one that makes sense.
use constant FILTER => undef;
use Carp qw//;
use Data::Dumper qw//;
use File::Spec;
use IO::File;
use Text::Extract::Word;
use Module::Runtime qw//;
sub do
{
my ($class, $file) = _args(@_);
my $text = Text::Extract::Word->new($file)->get_body(FILTER)
or CORE::do { $! = 'cannot read file'; return undef };
lib/Acme/RunDoc.pm view on Meta::CPAN
my $import = $module->can('import');
@_ = ($module, @args);
goto $import if $import;
}
}
sub import
{
my ($class, @args) = _args(@_);
my $caller = scalar caller;
local $Data::Dumper::Indent = 0;
while (@args)
{
my $module = shift @args;
my $args = ref $args[0] ? shift @args : undef;
my $eval = sprintf(
"{ package %s; my \@args = %s; Acme::RunDoc->use('%s', \@args); }",
$caller,
ref $args eq 'HASH'
? sprintf('do { my %s; %%$VAR1 }', Data::Dumper::Dumper($args))
: ref $args
? sprintf('do { my %s; @$VAR1 }', Data::Dumper::Dumper($args))
: '()',
$module,
);
eval "$eval; 1" or Carp::croak($@);
}
}
sub _args
{
my (@args) = @_;
( run in 0.475 second using v1.01-cache-2.11-cpan-4d50c553e7e )