On Fri, Oct 30, 2009 at 9:48 AM, Bob MacCallum <uncool...@gmail.com> wrote: > I clearly have more urgent things to do... > > @new = @old[map $_*2, 0..$#old/2];
Compact, but not overly readable and op-wise not ultra efficient: perl -MO=Terse -e ' @new = @old[map $_*2, 0..$#old/2];' LISTOP (0x100208ca0) leave [1] OP (0x100202620) enter COP (0x100208c40) nextstate BINOP (0x100208c00) aassign [13] UNOP (0x100209de0) null [142] OP (0x100208bd0) pushmark LISTOP (0x100209d00) aslice OP (0x100209d40) pushmark LOGOP (0x100209cc0) mapwhile [12] LISTOP (0x100209c20) mapstart OP (0x100209c60) pushmark UNOP (0x100209c90) null BINOP (0x1002091a0) multiply [6] UNOP (0x100209140) null [15] PADOP (0x100209110) gvsv GV (0x100804e28) *_ SVOP (0x100209170) const [15] IV (0x100813058) 2 UNOP (0x100209bf0) null UNOP (0x100206d30) flop UNOP (0x100206d00) flip [11] LOGOP (0x100206cc0) range [10] SVOP (0x1002e3240) const [16] IV (0x100804fd8) 0 BINOP (0x100206c80) divide [9] UNOP (0x100206c20) av2arylen UNOP (0x100206bf0) rv2av [8] PADOP (0x100206bc0) gv GV (0x100812fe0) *old SVOP (0x100206c50) const [14] IV (0x100813040) 2 UNOP (0x100220830) rv2av [4] PADOP (0x10020a6f0) gv GV (0x100812fe0) *old UNOP (0x100209d70) null [142] OP (0x100209db0) pushmark UNOP (0x100208eb0) rv2av [2] PADOP (0x100201c30) gv GV (0x100812f98) *new -e syntax OK Compared to: perl -MO=Terse -e 'my $i; @new = grep { $i != $i } @old;' LISTOP (0x100208f60) leave [1] OP (0x100202620) enter COP (0x100208fd0) nextstate OP (0x100201c30) padsv [1] COP (0x100209d50) nextstate BINOP (0x100209d10) aassign [7] UNOP (0x100209ca0) null [142] OP (0x100209ce0) pushmark LOGOP (0x100206d10) grepwhile [6] LISTOP (0x100206ca0) grepstart OP (0x100206ce0) pushmark UNOP (0x100206d50) null UNOP (0x100206c70) null LISTOP (0x100206b50) scope OP (0x100209150) null [177] BINOP (0x100209110) ne OP (0x100220830) padsv [1] OP (0x1002e3240) padsv [1] UNOP (0x100206c10) rv2av [5] PADOP (0x1002091b0) gv GV (0x100813058) *old UNOP (0x100209c60) null [142] OP (0x100206c40) pushmark UNOP (0x10020a6f0) rv2av [3] PADOP (0x100208eb0) gv GV (0x100812fc8) *new -e syntax OK Either way, it's a lot of ops to pull things out of an array.