in reply to Manipulating Array Indexes
If chewing up the input list (or a copy of it) is acceptable, here is a solution:
#!/usr/bin/perl use strict; use warnings; my @List = (1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1); my $Tag = 5; my @Result = (); while (@List) { push @Result, splice @List, 0, 3 if shift @List == $Ta +g } use Data::Dumper; print Data::Dumper->new([\@Result], [qw[Result]])->Indent(0)->Dump,"\n +"; __END__
Line 11 is the important part. As long as items remain in @List the loop iterates, shifting one item off the left edge of @List and checking if it is the $Tag value (5 in this example). If so, the next three elements are removed from @List and added to the @Result array.
|
|---|