http://www.perlmonks.org?node_id=1001437


in reply to Is it possible to get the array with all the elements at the end of a loop?

Hello supriyoch_2008.

As toolic has already informed you, push will allow you to insert the value of $newlist into @newarray on each pass through your loop.

On each iteration, $newlist changes, so because @newarray = "$newlist" is declared outside the scope of this loop, you are essentially creating a single element list and populating it with the last value of $newlist.

I would recommend that you take a look at Perlintro (safety net) and begin incorporating the use strict pragma into your code. This will help you keep cleaner and more maintainable code as well as help to keep you more aware of variable scope.

Perlstyle talks more about that white space that toolic recommended, along with other suggestions that will help you to make your code more readable. Lastly, you might consider having a read through perldebtut, and begin getting comfortable with debugging. As a rookie myself, I can say that using the debugger to walk through your code a step at a time can have a strong impact on your understanding of what is really happening inside your code.

Here's an example implementing use strict;, incorporating push, and eliminating some single use variables that were in the original.

#!/usr/bin/perl use warnings; use strict; use 5.12.4; my $word="ABCDEFGHIJKLMNO"; ## Determining the number of 4-letter Fragments: my $frag_Num = int (length($word)/4); say "Total Fragments= $frag_Num\n"; say "The 4-Letter Fragments are:\n"; my @newarray; my $frag = 0; while ($word =~ /(.{4}?)/igs) { $frag++; my $pos=$-[0]+1; my $leng=length($&); print "Fragment Number: $frag; Fragment: $&\n"; print "Length: $leng; Starting Position: $pos\n\n"; my $newlist=$leng; push @newarray, $newlist; } print"\n Newarray (should be 4 4 4): @newarray\n\n"; exit;