And of course, use grep, as others have said. @list[ grep !$_%2, 0..$#list ];
that gets you every other element, beginning with the first. --- On Wed, 5/16/12, John Douglas Porter <johndpor...@yahoo.com> wrote: > From: John Douglas Porter <johndpor...@yahoo.com> > Subject: Re: seeking golfing advice > To: fwp@perl.org > Date: Wednesday, May 16, 2012, 7:35 AM > It's not clear whether you want > "every other element, beginning with the first" or "every > numeric element with the property 'odd'". Your example > doesn't clear that up at all. :-) > > If it's the latter you want: > > map { $_ & 1 ? $_ : () } @l; > > > --- On Wed, 5/16/12, damien krotkine <dkrotk...@gmail.com> > wrote: > > > From: damien krotkine <dkrotk...@gmail.com> > > Subject: Re: seeking golfing advice > > To: fwp@perl.org > > Date: Wednesday, May 16, 2012, 7:19 AM > > btw here is an example : > > > > the code, applied on (1, 2, 3, 4) would return (1, 3). > > Thanks > > > > On 16 May 2012 13:15, damien krotkine <dkrotk...@gmail.com> > > wrote: > > > Hi, > > > > > > I'm using this code to get a list of only the odd > > elements of an > > > array. The resulting list must have the same order > as > > the array. > > > > > > map { state $f; ($_) x (++$f%2) } @array; > > > > > > I'm looking for advice to make it shorter or > nicer. > > Everything in perl > > > 5.12 is allowed, but must pass use strict. I've > failed > > at using the > > > '..' operator to act as a flip/flop operator... > > > > > > thanks, > > > dams > > >