> > > I would like to remove elements from an array that are eq to 
> > > string '0'
> > > The following does not work, can someone shed some light on 
> > > the proper 
> > > way to do this.
> > > Thanks!
> > > Dave G.

Here's an interesting benchmark comparing the splice, new list, and grep
(grep is the winner):
C:\tmp>perl ptest
           Rate  splice newlist    grep
splice  55188/s      --    -34%    -37%
newlist 84175/s     53%      --     -4%
grep    87642/s     59%      4%      --

Code:
use strict;
use Benchmark qw/cmpthese/;

cmpthese(100000, { 'grep' => \&sub_grep, 'splice' => \&sub_splice,
'newlist' => \&newlist });

sub sub_grep {
        my @bq = ( '0', 1, '0', '0', '0', '0', '0', '0', '0' ); 
        @bq = grep { $_ ne '0' } @bq;
}

sub sub_splice {
        my @bq = ( '0', 1, '0', '0', '0', '0', '0', '0', '0' ); 
        for (my $i = 0; $i < @bq; ++$i) {
                if ($bq[$i] eq '0') {
                        splice @bq, $i, 1;
                        redo;
                }
        }
}

sub newlist {
        my @bq = ( '0', 1, '0', '0', '0', '0', '0', '0', '0' ); 
        my @new;
        for (@bq) {
                if ($_ ne '0') {
                        push @new, $_;
                }
        }
}

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to