String-Interpolate
view release on metacpan or search on metacpan
"prereqs" : {
"configure" : {
"requires" : {
"ExtUtils::MakeMaker" : "0"
}
},
"runtime" : {
"requires" : {
"Carp" : "0",
"Exporter" : "0",
"PadWalker" : "0",
"Safe" : "0",
"Safe::Hole" : "0",
"Symbol" : "0",
"base" : "0",
"overload" : "0",
"perl" : "5.006",
"strict" : "0",
"warnings" : "0"
}
}
dynamic_config: 0
generated_by: 'Dist::Zilla version 6.012, CPAN::Meta::Converter version 2.150010'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: '1.4'
name: String-Interpolate
requires:
Carp: '0'
Exporter: '0'
PadWalker: '0'
Safe: '0'
Safe::Hole: '0'
Symbol: '0'
base: '0'
overload: '0'
perl: '5.006'
strict: '0'
warnings: '0'
resources:
homepage: https://github.com/neilb/String-Interpolate
Makefile.PL view on Meta::CPAN
"CONFIGURE_REQUIRES" => {
"ExtUtils::MakeMaker" => 0
},
"DISTNAME" => "String-Interpolate",
"LICENSE" => "perl",
"MIN_PERL_VERSION" => "5.006",
"NAME" => "String::Interpolate",
"PREREQ_PM" => {
"Carp" => 0,
"Exporter" => 0,
"PadWalker" => 0,
"Safe" => 0,
"Safe::Hole" => 0,
"Symbol" => 0,
"base" => 0,
"overload" => 0,
"strict" => 0,
"warnings" => 0
},
"VERSION" => "0.33",
"test" => {
"TESTS" => "t/*.t"
}
);
my %FallbackPrereqs = (
"Carp" => 0,
"Exporter" => 0,
"PadWalker" => 0,
"Safe" => 0,
"Safe::Hole" => 0,
"Symbol" => 0,
"base" => 0,
"overload" => 0,
"strict" => 0,
"warnings" => 0
);
lib/String/Interpolate.pm view on Meta::CPAN
}
$pkg = $safe->root if $safe;
local $_ = do { no warnings 'uninitialized'; "$_"},
local *_ = %_ ? String::Interpolate::Func->wrap_hash('_',\%_) : {}
if $safe && ! $$self->{unsafe_underscore};
my $safe_symbols = $safe && ! $$self->{unsafe_symbols};
# use PadWalker qw( peek_my ); use Data::Dumper; die Dumper peek_my(2);
my @pad_map;
if ( $$self->{lexicals} ) {
my $depth = 1;
$depth++ while caller($depth)->isa(__PACKAGE__);
# die "$depth ". scalar(caller($depth));
require PadWalker;
my $pad = PadWalker::peek_my($depth+1);
# use Data::Dumper; die Dumper $pad;
while ( my ( $k,$v ) = each %$pad ) {
$k =~ s/^([@%\$])//
or die "$k does not start with \$, \@ or \%";
$v = *$v{$type_from_prefix{$1}} if ref $v eq 'GLOB';
push @pad_map => { $k => $v };
}
}
for ( @pad_map, @{$$self->{map}} ) {
lib/String/Interpolate.pm view on Meta::CPAN
my $unsafe_symbols = shift;
$$self->{unsafe_symbols} = defined $unsafe_symbols ? $unsafe_symbols : 1;
$self;
}
=item lexicals
This feature is EXPERIMENTAL. Do not use it in real code.
Tells the String::Interpolate object whether or not to use the
PadWalker module to import all lexical variables from the calling
context into the temporary package or Safe compartment. By default
this does not happen as it is conceptually ugly and quite expensive.
$i->lexicals; # Enable lexicals
$i->lexicals(1) # Enable lexicals
$i->lexicals(0); # Disable lexicals
Returns the object so that it can be tagged on to constructor calls.
my $i = String::Interpolate->safe->lexicals;
( run in 0.592 second using v1.01-cache-2.11-cpan-05444aca049 )