Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.perl.misc > #8847

Re: No more than N element of an array

Newsgroups comp.lang.perl.misc
Subject Re: No more than N element of an array
References <ksrg9b$gv9$1@reader1.panix.com> <4j99ca-t92.ln1@anubis.morrow.me.uk> <kst3q6$91q$1@speranza.aioe.org>
From Ben Morrow <ben@morrow.me.uk>
Organization morrow.me.uk
Date 2013-07-26 09:00 +0100
Message-ID <ctm9ca-mc3.ln1@anubis.morrow.me.uk> (permalink)

Show all headers | View raw


Quoth Charles DeRykus <derykus@gmail.com>:
> On 7/25/2013 9:12 PM, Ben Morrow wrote:
> >
> > Quoth tmcd@panix.com:
> >> A cow-orker is coding something: he gets an array of results, but
> >> wants to take no more than the first 1000 elements.  His suggestion was
[...]
> >> Is there a cleaner way?
> >
> > Perhaps
> >
> >      @results = splice @results, 0, MAXSEARCHRESULTS;
> 
> If fewer strokes were to factor into cleanliness, even:
> 
>      @results = @results[0..MAXSEARCHRESULTS];

Tim already pointed out that this returns extraneous undefs if @results
is too short.

> But, as you grow array size and MAXSEARCHRESULTS,  it gets filthy slow...
> 
> Setting $#results = MAXSEARCHRESULTS undoubtedly comes out of the wash 
> purest and fastest.

It's probably easiest, though turning off the warning and using Tim's 

    splice @results, MAXSEARCHRESULTS - 1;

is probably better, on balance. Using $#ary as an lvalue has some
permanent side-effects on the array; you can see them with Devel::Peek.

[The side-effects are to do with the fact that $#ary is a scalar lvalue
and \$#ary should return a ref to the same scalar every time, so we need
an actual permanent scalar somewhere, which turns out to get stored in
the array's magic.]

Ben

Back to comp.lang.perl.misc | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

No more than N element of an array tmcd@panix.com (Tim McDaniel) - 2013-07-25 15:29 +0000
  Re: No more than N element of an array Rainer Weikusat <rweikusat@mssgmbh.com> - 2013-07-25 16:38 +0100
    Re: No more than N element of an array Rainer Weikusat <rweikusat@mssgmbh.com> - 2013-07-25 16:44 +0100
  Re: No more than N element of an array Ben Morrow <ben@morrow.me.uk> - 2013-07-26 05:12 +0100
    Re: No more than N element of an array Charles DeRykus <derykus@gmail.com> - 2013-07-25 23:08 -0700
      Re: No more than N element of an array Ben Morrow <ben@morrow.me.uk> - 2013-07-26 09:00 +0100
        Re: No more than N element of an array Charles DeRykus <derykus@gmail.com> - 2013-07-26 02:19 -0700
          Re: No more than N element of an array "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2013-07-26 11:32 +0200
            Re: No more than N element of an array Charles DeRykus <derykus@gmail.com> - 2013-07-26 03:38 -0700
          Re: No more than N element of an array Ben Morrow <ben@morrow.me.uk> - 2013-07-26 11:26 +0100
          Re: No more than N element of an array tmcd@panix.com (Tim McDaniel) - 2013-07-26 14:27 +0000
            min (), and Perl modules Ivan Shmakov <oneingray@gmail.com> - 2013-07-26 15:16 +0000
              Re: min (), and Perl modules tmcd@panix.com (Tim McDaniel) - 2013-07-26 16:17 +0000
            Re: No more than N element of an array Ben Morrow <ben@morrow.me.uk> - 2013-07-26 16:39 +0100
        Re: No more than N element of an array Rainer Weikusat <rweikusat@mssgmbh.com> - 2013-07-26 16:38 +0100
          Re: No more than N element of an array Ben Morrow <ben@morrow.me.uk> - 2013-07-26 19:23 +0100
            Re: No more than N element of an array Rainer Weikusat <rweikusat@mssgmbh.com> - 2013-07-30 17:52 +0100
              Re: No more than N element of an array Charles DeRykus <derykus@gmail.com> - 2013-07-30 22:10 -0700

csiph-web