Acme-AirRead
view release on metacpan or search on metacpan
inc/Module/Install.pm view on Meta::CPAN
#####################################################################
# Common Utility Functions
sub _caller {
my $depth = 0;
my $call = caller($depth);
while ( $call eq __PACKAGE__ ) {
$depth++;
$call = caller($depth);
}
return $call;
}
# Done in evals to avoid confusing Perl::MinimumVersion
eval( $] >= 5.006 ? <<'END_NEW' : <<'END_OLD' ); die $@ if $@;
sub _read {
local *FH;
open( FH, '<', $_[0] ) or die "open($_[0]): $!";
my $string = do { local $/; <FH> };
inc/Module/Install/Makefile.pm view on Meta::CPAN
}
sub Makefile { $_[0] }
my %seen = ();
sub prompt {
shift;
# Infinite loop protection
my @c = caller();
if ( ++$seen{"$c[1]|$c[2]|$_[0]"} > 3 ) {
die "Caught an potential prompt infinite loop ($c[1]|$c[2]|$_[0])";
}
# In automated testing or non-interactive session, always use defaults
if ( ($ENV{AUTOMATED_TESTING} or -! -t STDIN) and ! $ENV{PERL_MM_USE_DEFAULT} ) {
local $ENV{PERL_MM_USE_DEFAULT} = 1;
goto &ExtUtils::MakeMaker::prompt;
} else {
goto &ExtUtils::MakeMaker::prompt;
inc/Test/More.pm view on Meta::CPAN
#---- perlcritic exemptions. ----#
# We use a lot of subroutine prototypes
## no critic (Subroutines::ProhibitSubroutinePrototypes)
# Can't use Carp because it might cause use_ok() to accidentally succeed
# even though the module being used forgot to use Carp. Yes, this
# actually happened.
sub _carp {
my( $file, $line ) = ( caller(1) )[ 1, 2 ];
return warn @_, " at $file line $line\n";
}
our $VERSION = '0.98';
$VERSION = eval $VERSION; ## no critic (BuiltinFunctions::ProhibitStringyEval)
use Test::Builder::Module;
our @ISA = qw(Test::Builder::Module);
our @EXPORT = qw(ok use_ok require_ok
is isnt like unlike is_deeply
lib/Acme/AirRead.pm view on Meta::CPAN
package Acme::AirRead;
use strict;
use warnings;
no strict 'refs';
our $VERSION = '0.05';
our $NO_READ = qr{air|luft};
sub import {
my ($pkg) = caller(0);
*{ $pkg . '::read_air' } = \&read_air;
*{ $pkg . '::write_air' } = \&write_air;
*{ $pkg . '::empty_air' } = \&empty_air;
}
sub read_air {
my ($pkg) = caller(0);
my $key = lc $_[0];
return if $key =~ $NO_READ;
my $namespace = $pkg . '::AirRead::attr';
if ( $namespace->can($_[0]) ) {
return *{ $pkg . '::AirRead::attr::' . $_[0] }->();
}
else {
return;
}
}
sub write_air {
my ($pkg) = caller(0);
return unless scalar @_;
my %args = @_;
foreach my $key ( sort keys %args ) {
my $val = $args{$key};
*{ $pkg . '::AirRead::attr::' . $key } = sub { $val };
}
}
sub empty_air {
my ($pkg) = caller(0);
my $symbol_tbl = $pkg . '::AirRead::attr::';
foreach my $symbol ( keys %$symbol_tbl ) {
delete $symbol_tbl->{$symbol};
}
}
1;
__END__
=head1 NAME
( run in 0.255 second using v1.01-cache-2.11-cpan-b61123c0432 )