Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: How do I insert an element into an arbitrary (in range) array index?

by Jorge_de_Burgos (Beadle)
on Nov 09, 2009 at 12:46 UTC ( [id://805913]=note: print w/replies, xml ) Need Help??


in reply to How do I insert an element into an arbitrary (in range) array index?

#!/usr/bin/perl -w use warnings; use strict; use 5.10.0; my @in_array = qw(A B C E F G); my @out_array; my $insert = 'D'; push @out_array, @in_array[0..2], $insert, @in_array[3..5]; say join (', ', @in_array); say join (', ', @out_array); exit;
I think this approach is the most human-readable. By the way, it doesn't use splice with its performance issues.

Replies are listed 'Best First'.
Re: Answer: How do I insert an element into an arbitrary (in range) array index?
by choroba (Cardinal) on Nov 20, 2015 at 16:38 UTC
    What issues?
    #!/usr/bin/perl use warnings; use strict; use Test::More tests => 3; use Benchmark qw{ cmpthese }; my $short = ['a' .. 'z']; my $long = ['a' .. 'zzzzz']; sub ar { my $ar = shift; my $mid = @$ar / 2 - 1; push my @r, @$ar[ 0 .. $mid ], 'new', @$ar[ $mid + 1 .. $#$ar ]; \@r } sub sp { my @r = @{+shift}; splice @r, @r / 2, 0, 'new'; \@r } diag(scalar @$_) for $short, $long; is_deeply(ar($short), sp($short), 'same short'); is_deeply(ar($long), sp($long), 'same long'); is_deeply(ar($short), [ 'a' .. 'm', 'new', 'n' .. 'z' ], 'expected sho +rt'); cmpthese(-3, { 'ar-short' => sub { ar($short) }, 'sp-short' => sub { sp($short) }, }); cmpthese(-10, { 'ar-long' => sub { ar($long) }, 'sp-long' => sub { sp($long) }, }); __END__ Output: 1..3 # 26 # 12356630 ok 1 - same short ok 2 - same long ok 3 - expected short Rate ar-short sp-short ar-short 127474/s -- -21% sp-short 160522/s 26% -- s/iter ar-long sp-long ar-long 3.12 -- -15% sp-long 2.64 18% --
    ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://805913]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (6)
As of 2024-03-28 08:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found