http://qs321.pair.com?node_id=443923

saintmike has asked for the wisdom of the Perl Monks concerning the following question:

Hey fellow monks, here's an easy problem, but I'm looking for an elegant solution, high in readability, low in use of additional modules.

How to insert a new element right after a given element in an array?

my @arr = qw(a b c d c e f); insert_after_first(\@arr, "c", "x");
should result in @arr containing
a b c x d c e f
Note that it shouldn't be touching duplicate entries (like the second "c"). An obvious solution would be
sub insert_after_first { my($arr, $element, $insert) = @_; for(my $idx=0; $idx < @$arr; $idx++) { if($arr->[$idx] eq $element) { splice @$arr, $idx+1, 0, $insert; return @$arr; } } }
but that's nowhere as perlish or short as I'd like it to be.

Who's up for the challenge?