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
|