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?
should result in @arr containingmy @arr = qw(a b c d c e f); insert_after_first(\@arr, "c", "x");
Note that it shouldn't be touching duplicate entries (like the second "c"). An obvious solution would bea b c x d c e f
but that's nowhere as perlish or short as I'd like it to 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; } } }
Who's up for the challenge?
Back to
Seekers of Perl Wisdom