sub f {
my ($x) = @_;
'' =~ /(?{ print "$x\n" })/;
}
f(4); # 4
f(5); # 4!!
####
sub f {
my ($x) = @_;
$block ||= sub { print "$x\n" };
$block->();
}
f(4); # 4
f(5); # 4!!
##
##
BEGIN {
package Prefixer;
sub new {
my ($class, $prefix) = @_;
return bless({ prefix => $prefix }, $class);
}
sub prefix {
my ($self) = @_;
return join '', $self->{prefix}, @_;
}
}
my $a_prefixer = Prefixer->new('a');
my $b_prefixer = Prefixer->new('b');
print("$_\n")
for $a_prefixer->prefix('1'), # a1
$a_prefixer->prefix('2'), # a2
$b_prefixer->prefix('3'), # b3
$b_prefixer->prefix('4'); # b4
##
##
sub make_prefixer {
my ($prefix) = @_;
return sub { return join '', $prefix, @_ };
}
my $a_prefixer = make_prefixer('a');
my $b_prefixer = make_prefixer('b');
print("$_\n")
for $a_prefixer->('1'), # a1
$a_prefixer->('2'), # a2
$b_prefixer->('3'), # b3
$b_prefixer->('4'); # b4
##
##
sub f {
local our ($x) = @_;
$block ||= sub { print "$x\n" };
$block->();
}
f(4); # 4
f(5); # 5
##
##
sub f {
local our ($x) = @_;
'' =~ /(?{ print "$x\n" })/;
}
f(4); # 4
f(5); # 5