in reply to Re: Problem creating array
in thread Problem creating array

The shorter, more elegant approach involves the use of the map built-in. You (Subop) don't need it right now, but you should keep  map in mind as you build your Perl skills.
>perl -wMstrict -le "my @count = (1, 3, 1, 1, 1, 1, 1, 2, 1, 1, 3, 2); my @result = map { ($_) x $count[$_] } 0 .. $#count; print qq{@count}; print qq{@result}; " 1 3 1 1 1 1 1 2 1 1 3 2 0 1 1 1 2 3 4 5 6 7 7 8 9 10 10 10 11 11

Replies are listed 'Best First'.
Re^3: Problem creating array
by johngg (Canon) on Sep 16, 2009 at 22:44 UTC

    A slightly simpler map at the cost of declaring another scalar.

    $ perl -Mstrict -wle ' > my @count = ( 1, 3, 1, 1, 1, 1, 1, 2, 1, 1, 3, 2 ); > my $idx; > my @result = map { ( $idx ++ ) x $_ } @count; > print qq{@count}; > print qq{@result};' 1 3 1 1 1 1 1 2 1 1 3 2 0 1 1 1 2 3 4 5 6 7 7 8 9 10 10 10 11 11 $

    I hope this is of interest.

    Cheers,

    JohnGG