$ perl -MO=Deparse -e 'my $CODE_REF = \"if (\$c == 64) { \$MODE = print \"\\n\"; }" . " else { print chr(\$MODE = \$MODE & 1 ? 32 : 35) x \$c; } ";'
my $CODE_REF = 'SCALAR(0xa00038be0) else { print chr($MODE = $MODE & 1 ? 32 : 35) x $c; } ';
-e syntax OK
####
$ perl -e 'my $CODE_REF = \"if (\$c == 64) { \$MODE = print \"\\n\"; }" . " else { print chr(\$MODE = \$MODE & 1 ? 32 : 35) x \$c; } "; my $ref = ref $code_ref; print $ref ? $ref : "not a ref";'
not a ref
####
$ perl -Mstrict -e 'my $CODE_REF = \"if (\$c == 64) { \$MODE = print \"\\n\"; }" . " else { print chr(\$MODE = \$MODE & 1 ? 32 : 35) x \$c; } "; $CODE_REF->();'
Can't use string ("SCALAR(0xa00038c70) else { print"...) as a subroutine ref while "strict refs" in use at -e line 1.
####
#!/usr/bin/env perl
use strict;
use warnings;
my ($x, $y) = qw{X Y};
print "BEFORE:\n";
print "\$x[$x] \$y[$y]\n";
mod_callers_vars(\$x, \$y);
print "AFTER:\n";
print "\$x[$x] \$y[$y]\n";
sub mod_callers_vars {
my ($x_ref, $y_ref) = @_;
$$x_ref = 'A';
$$y_ref = 'B';
return;
}
####
BEFORE:
$x[X] $y[Y]
AFTER:
$x[A] $y[B]