App-Easer
view release on metacpan or search on metacpan
lib/App/Easer/V1.pm view on Meta::CPAN
} ## end sub get_child
sub stock_ChildrenByPrefix ($self, $spec, @prefixes) {
require File::Spec;
my @expanded_inc = map {
my ($v, $dirs) = File::Spec->splitpath($_, 'no-file');
[$v, File::Spec->splitdir($dirs)];
} @INC;
my %seen;
return map {
my @parts = split m{::}mxs, $_ . 'x';
substr(my $bprefix = pop @parts, -1, 1, '');
map {
my ($v, @dirs) = $_->@*;
my $dirs = File::Spec->catdir(@dirs, @parts);
if (opendir my $dh, File::Spec->catpath($v, $dirs, '')) {
grep { ! $seen{$_}++ }
map {
substr(my $lastpart = $_, -3, 3, '');
join '::', @parts, $lastpart;
} grep {
lib/App/Easer/V1.pm view on Meta::CPAN
for my $p (keys $expansion_for->%*) {
next if $p ne substr $executable, 0, length $p;
substr $executable, 0, length $p, $expansion_for->{$p};
last SEARCH;
}
} ## end SEARCH: for my $expansion_for (...)
# if it *still* "starts" with '=', it's "inline" Perl code
return eval $executable if $executable =~ s{\A \s* = \s* }{}mxs;
my ($package, $sname) = split m{\#}mxs, $executable;
$sname = $default_subname unless defined $sname && length $sname;
# first try to see if the sub is already available in $package
if (my $s = $package->can($sname)) { return $s }
# otherwise force loading of $package and retry
(my $path = "$package.pm") =~ s{::}{/}gmxs;
require $path;
if (my $s = $package->can($sname)) { return $s }
lib/App/Easer/V2.pm view on Meta::CPAN
sub _collect ($self, $sources, @args) {
my @residual_args; # what is left from the @args at the end
my $slot = $self->slot;
my $last_priority = 0;
for my $source ($sources->@*) {
my ($src, @opts) = ref($source) eq 'ARRAY' ? $source->@* : $source;
my $meta = (@opts && ref $opts[0]) ? shift @opts : {};
my $locator = $src;
if (! ref($src)) {
($src, my $priority) = split m{=}mxs, $src;
$meta->{priority} = $priority if defined $priority;
$locator = $src =~ s{\A \+}{source_}rmxs;
}
my $sub = $self->ref_to_sub($locator)
or die "unhandled source for $locator\n";
my ($slice, $residuals) = $sub->($self, \@opts, \@args);
push @residual_args, $residuals->@* if defined $residuals;
# whatever happened in the source, it might have changed the
lib/App/Easer/V2.pm view on Meta::CPAN
my @children = $self->children;
# handle auto-loading of children from modules in @INC via prefixes
require File::Spec;
my @expanded_inc = map {
my ($v, $dirs) = File::Spec->splitpath($_, 'no-file');
[$v, File::Spec->splitdir($dirs)];
} @INC;
my %seen;
my @autoloaded_children = map {
my @parts = split m{::}mxs, $_ . 'x';
substr(my $bprefix = pop @parts, -1, 1, '');
map {
my ($v, @dirs) = $_->@*;
my $dirs = File::Spec->catdir(@dirs, @parts);
if (opendir my $dh, File::Spec->catpath($v, $dirs, '')) {
grep { !$seen{$_}++ }
map {
substr(my $lastpart = $_, -3, 3, '');
join '::', @parts, $lastpart;
} grep {
lib/App/Easer/V2.pm view on Meta::CPAN
if ($refch eq 'GLOB') {
$fh = $channel;
}
elsif ($refch eq 'SCALAR') {
open $fh, '>', $channel or die "open(): $!\n";
}
elsif ($refch) {
die 'invalid channel';
}
else {
($channel, my $binmode) = split m{:}mxs, $channel, 2;
if ($channel eq '-' || lc($channel) eq '-stdout') {
$fh = \*STDOUT;
}
elsif (lc($channel) eq '-stderr') {
$fh = \*STDERR;
}
else {
open $fh, '>', $channel or die "open('$channel'): $!\n";
}
binmode $fh, $binmode if length($binmode // '');
( run in 1.543 second using v1.01-cache-2.11-cpan-483215c6ad5 )