XP is just a number PerlMonks

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

by Denis.Beurive (Initiate)
 on Jul 06, 2010 at 13:51 UTC Need Help??

Hello! You can use this function :

```sub arrayInsertAfterPosition
{
my (\$inArray, \$inPosition, \$inElement) = @_;
my @res         = ();
my @after       = ();
my \$arrayLength = int @{\$inArray};

if (\$inPosition < 0) { @after = @{\$inArray}; }
else {
if (\$inPosition >= \$arrayLength)    { \$inPosition = \$arrayLen
+gth - 1; }
if (\$inPosition < \$arrayLength - 1) { @after = @{\$inArray}[(\$
+inPosition+1)..(\$arrayLength-1)]; }
}

push (@res, @{\$inArray}[0..\$inPosition],
\$inElement,
@after);

return @res;
}

my @tab = qw(A B C D E);
my @res = ();

@res = arrayInsertAfterPosition (\@tab, -1, 'Test');
print join(', ', @res) . "\n";
@res = arrayInsertAfterPosition (\@tab, 0, 'Test');
print join(', ', @res) . "\n";
@res = arrayInsertAfterPosition (\@tab, 1, 'Test');
print join(', ', @res) . "\n";
@res = arrayInsertAfterPosition (\@tab, 2, 'Test');
print join(', ', @res) . "\n";
@res = arrayInsertAfterPosition (\@tab, 3, 'Test');
print join(', ', @res) . "\n";
@res = arrayInsertAfterPosition (\@tab, 4, 'Test');
print join(', ', @res) . "\n";
@res = arrayInsertAfterPosition (\@tab, 5, 'Test');
print join(', ', @res) . "\n";

The result is :

```Test, A, B, C, D, E
A, Test, B, C, D, E
A, B, Test, C, D, E
A, B, C, Test, D, E
A, B, C, D, Test, E
A, B, C, D, E, Test
A, B, C, D, E, Test

Replies are listed 'Best First'.
Re: Answer: How do I insert an element into an arbitrary (in range) array index?
by Corion (Patriarch) on Jul 07, 2010 at 12:43 UTC

I don't see where your subroutine is better than splice.

Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://848223]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (4)
As of 2024-08-04 02:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?

No recent polls found

Notices?
 • erzuuli ‥ 🛈The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.