B-DeparseTree
view release on metacpan or search on metacpan
lib/B/DeparseTree/PPfns.pm view on Meta::CPAN
}
sub WARN_MASK () {
return $WARN_MASK;
}
}
my(%left, %right);
sub ambient_pragmas {
my $self = shift;
my ($arybase, $hint_bits, $warning_bits, $hinthash) = (0, 0);
while (@_ > 1) {
my $name = shift();
my $val = shift();
if ($name eq 'strict') {
require strict;
if ($val eq 'none') {
$hint_bits &= $strict_bits{$_} for qw/refs subs vars/;
next();
}
my @names;
if ($val eq "all") {
@names = qw/refs subs vars/;
}
elsif (ref $val) {
@names = @$val;
}
else {
@names = split' ', $val;
}
$hint_bits |= $strict_bits{$_} for @names;
}
elsif ($name eq '$[') {
if (OPpCONST_ARYBASE) {
$arybase = $val;
} else {
croak "\$[ can't be non-zero on this perl" unless $val == 0;
}
}
elsif ($name eq 'integer'
|| $name eq 'bytes'
|| $name eq 'utf8') {
require "$name.pm";
if ($val) {
$hint_bits |= ${$::{"${name}::"}{"hint_bits"}};
}
else {
$hint_bits &= ~${$::{"${name}::"}{"hint_bits"}};
}
}
elsif ($name eq 're') {
require re;
if ($val eq 'none') {
$hint_bits &= ~re::bits(qw/taint eval/);
next();
}
my @names;
if ($val eq 'all') {
@names = qw/taint eval/;
}
elsif (ref $val) {
@names = @$val;
}
else {
@names = split' ',$val;
}
$hint_bits |= re::bits(@names);
}
elsif ($name eq 'warnings') {
if ($val eq 'none') {
$warning_bits = $warnings::NONE;
next();
}
my @names;
if (ref $val) {
@names = @$val;
}
else {
@names = split/\s+/, $val;
}
$warning_bits = $warnings::NONE if !defined ($warning_bits);
$warning_bits |= warnings::bits(@names);
}
elsif ($name eq 'warning_bits') {
$warning_bits = $val;
}
elsif ($name eq 'hint_bits') {
$hint_bits = $val;
}
elsif ($name eq '%^H') {
$hinthash = $val;
}
else {
croak "Unknown pragma type: $name";
}
}
if (@_) {
croak "The ambient_pragmas method expects an even number of args";
}
$self->{'ambient_arybase'} = $arybase;
$self->{'ambient_warnings'} = $warning_bits;
$self->{'ambient_hints'} = $hint_bits;
$self->{'ambient_hinthash'} = $hinthash;
}
sub anon_hash_or_list($$$)
{
my ($self, $op, $cx) = @_;
my $name = $op->name;
my($pre, $post) = @{{"anonlist" => ["[","]"],
"anonhash" => ["{","}"]}->{$name}};
( run in 0.903 second using v1.01-cache-2.11-cpan-39bf76dae61 )