use warnings;
use List::Util;
my $reduced = List::Util::reduce { $a + $b } 1, 2, 3, 4;
print "$reduced\n";
####
Name "main::a" used only once: possible typo at mytest.pl line 3.
Name "main::b" used only once: possible typo at mytest.pl line 3.
10
##
##
use warnings;
my @sorted = sort { $a <=> $b } 1, 2, 3, 4;
print "@sorted\n";
##
##
1 2 3 4
##
##
STATIC void
S_simplify_sort(pTHX_ OP *o)
{
dVAR;
OP *kid = cLISTOPo->op_first->op_sibling; /* get past pushmark */
OP *k;
int descending;
GV *gv;
const char *gvname;
bool have_scopeop;
PERL_ARGS_ASSERT_SIMPLIFY_SORT;
if (!(o->op_flags & OPf_STACKED))
return;
GvMULTI_on(gv_fetchpvs("a", GV_ADD|GV_NOTQUAL, SVt_PV));
GvMULTI_on(gv_fetchpvs("b", GV_ADD|GV_NOTQUAL, SVt_PV));
...
##
##
void
reduce(block,...)
SV * block
PROTOTYPE: &@
CODE:
{
SV *ret = sv_newmortal();
int index;
GV *agv,*bgv,*gv;
HV *stash;
SV **args = &PL_stack_base[ax];
CV* cv = sv_2cv(block, &stash, &gv, 0);
if (cv == Nullcv) {
croak("Not a subroutine reference");
}
if(items <= 1) {
XSRETURN_UNDEF;
}
agv = gv_fetchpv("a", GV_ADD, SVt_PV);
bgv = gv_fetchpv("b", GV_ADD, SVt_PV);
...
##
##
agv = gv_fetchpv("a", GV_ADD, SVt_PV);
GvMULTI_on(agv); /* No apparent effect. */
agv = gv_fetchpv("a", GV_ADD|GV_ADDMULTI, SVt_PV); /* Nope */
agv = gv_fetchpv("a", GV_ADDMULTI, SVt_PV); /* *sigh* No. */