in reply to Re^2: add elements to array at certain positions
in thread add elements to array at certain positions

The OP's example made it clear that no values from @a were to be skipped. $i should not increment each time, and even if it should, it should either be set to -1 before the 'loop', or incremented after the ternary. Your sample preincrements $i so $a[0] would always be skipped.


Perl reduces RSI - it saves typing
  • Comment on Re^3: add elements to array at certain positions

Replies are listed 'Best First'.
Re^4: add elements to array at certain positions
by juster (Friar) on Oct 30, 2008 at 16:56 UTC

    Oops, I'm sorry! I will stop posting at night before sleep. Here is a fast List::MoreUtils alternative that actually does what the OP asks for this time:

    use List::MoreUtils qw(indexes); my $a = '0157953'; my $b = 'abcyefzaa'; my $new = $a; substr $new, $_, 0, 'I' foreach ( indexes { $_ =~ /^[yz]$/ } split(//, $b) ); print $new, "\n";

    Update: I just realized this nearly identical loop is much faster (nested update: oops it's pos-1):

    substr $new, pos($b)-1, 0, 'I' while ( $b =~ /[yz]/g );