DBD-Oracle
view release on metacpan or search on metacpan
Makefile.PL view on Meta::CPAN
my %expand_shellescape;
sub expand_shellescape {
my($orig, $level) = @_;
my $cmd = $orig;
my $debug = $::opt_d || $::opt_v;
print "Evaluating `$orig`\n"
if $debug && !$expand_shellescape{$orig};
# ensure we have no $(...) vars left - strip out undefined ones:
$cmd =~ s/\$[({](\w+)[})]/mkvar("$1", 1, 0, $level+1)/ge;
print " expanded `$cmd`\n" if $debug and $cmd ne $orig;
my $result = `$cmd`;
$result =~ s/\s+$/ /; # newlines etc to single space
print " returned '$result'\n"
if $debug && !$expand_shellescape{$orig};
$expand_shellescape{$orig} = $result;
$result;
}
sub expand_mkvars {
my ($string, $strip, $backtick, $level, $maxlevel) = @_;
return if(!defined $string);
$level ||= 1;
local($_) = $string;
print "$level Expanding $_\n" if $::opt_d;
# handle whizzo AIX make feature used by Oracle
s/\$[({] (\w+) \? ([^(]*?) : ([^(]*?) [})]/
my ($vname, $vT, $vF) = ($1,$2,$3);
$MK{$vname} = (mkvar($vname, 1, $backtick, $level+1)) ? $vT : $vF
/xge; # can recurse
s/\$[({] (\w+) [})]/
mkvar("$1", $strip, $backtick, $level+1, $maxlevel)
/xge; # can recurse
s/`(.*?[^\\])`/expand_shellescape("$1", $level+1)/esg if $backtick; # can recurse
s/\s*\\\n\s*/ /g; # merge continuations
s/\s+/ /g; # shrink whitespace
print "$level Expanded $string\n to $_\n\n" if $::opt_d and $_ ne $string;
$_;
}
( run in 0.251 second using v1.01-cache-2.11-cpan-cc502c75498 )