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


in reply to Re^2: Returning Array
in thread Returning Array

Replace the return with a function (push, unshift, splice, as examples) that builds up a temporary array that you return.

I would probably build it in two parts -- one that iterates over all of @data, one line at a time, and the other part that handles one line at a time. I might even put the part that iterates over @data back into the code that is calling your sub (perhaps with map or something similar).

Your code is basically selecting a group of lines, and then transforming them. To me that says something along these lines (see grep and map):

my @output = map { doTransformation( $_ ); } grep { shouldSelectData( $_ ); } @data;

--MidLifeXis