$ perl -Mstrict -Mwarnings -MO=Deparse -e '
use constant FOO => sub { join( shift, @_, ); };
printf( "%s\n", FOO->( ", ", 1 .. 10, ), );
'
use constant ('FOO', sub {
BEGIN {${^WARNING_BITS} = "UUUUUUUUUUUU"}
use strict 'refs';
join shift @_, @_;
}
);
BEGIN {${^WARNING_BITS} = "UUUUUUUUUUUU"}
use strict 'refs';
printf "%s\n", sub {
join shift @_, @_;
}
->(', ', 1..10);
-e syntax OK
####
perl -Mstrict -Mwarnings -e '
printf "%s\n", do {
local @_ = (", ", 1..10);
join shift @_, @_;
};
'
##
##
#!/usr/bin/env perl
use strict;
use warnings;
use Benchmark();
Benchmark::cmpthese( -1, {
sub_join_1 => sub { sub { join shift @_, @_; }->( ", ", 1 .. 100 ); },
do_join_1 => sub { do { local @_ = ( ", ", 1 .. 100 ); join shift @_, @_; }; },
} );
__END__
$ perl bench_do_sub_1.pl
Rate do_join_1 sub_join_1
do_join_1 17935/s -- -73%
sub_join_1 66991/s 274% --