in reply to Manually incrementing @ array during for
use strict; use warnings; $|=1; my $data_lines = ('keyword1 data1 data2 data3 keyword2 data1 data2 data3 data4 data5 data6 keyword1 data1 data2 data3 data4 keyword3 data1 '); my @lines = split (/\n/,$data_lines); print "To show array of text lines as per spec:\n"; foreach (@lines) { print " $_\n"; } print "\n"; print "Showing data array's per combined input lines:\n\n"; my @array = (); foreach my $line (@lines) { if ($line =~ /^\S/ and @array>0) # Finish previous record { process_array (@array); @array = (); #start new record push (@array,$_) foreach (split ' ',$line); } else # new or continuing record { push (@array, $_) foreach (split ' ',$line); } } process_array (@array); # the last record sub process_array { my @array = @_; print "process array in some sub = @array\n"; } __END__ To show array of text lines as per spec: keyword1 data1 data2 data3 keyword2 data1 data2 data3 data4 data5 data6 keyword1 data1 data2 data3 data4 keyword3 data1 Showing data array's per combined input lines: process array in some sub = keyword1 data1 data2 data3 process array in some sub = keyword2 data1 data2 data3 data4 data5 dat +a6 process array in some sub = keyword1 data1 data2 data3 data4 process array in some sub = keyword3 data1
|
|---|