in reply to Inserting an element into an array after a certain element

Doing it without splice.
sub insert_after_first { my ($element, $insert, @array) = @_; my @ret = (); while (push(@ret, shift @array) && $ret[-1] ne $element && @array) {}; # (@ret, $insert, @array); (@ret, scalar @array ? $insert : (), @array); } print join(' ', insert_after_first('c', 'x', qw ( a b c d c e f ))), "\n"; print join(' ', insert_after_first('q', 'x', qw ( a b c d c e f ))), "\n";
Update: fixed per Roy Johnson
-- gam3
A picture is worth a thousand words, but takes 200K.

Replies are listed 'Best First'.
Re^2: Inserting an element into an array after a certain element
by Roy Johnson (Monsignor) on Mar 31, 2005 at 20:04 UTC
    I still don't think you should insert if the elment you specify isn't there.
    sub insert_after_first { my ($element, $insert, @array) = @_; my $hit; map {($_, ($_ eq $element and !$hit++) ? $insert : ())} @arr; }

    Caution: Contents may have been coded under pressure.