NetBackup bppllist array

I am starting to create a script to create an array or multiple arrays that i can create reports from. I am not sure of the best way to approach this. In the example below there are many lines that contain multiple fields all separated by spaces. I am thinking of a single array where i would name each field and store the data for the field in the array. But two of the problems i see with that are there can be an undermined number of clients listed and in most cases will be more than one schedule.

The way the output works is the first word is a keyword for the type of data, each space separated value after that is a field.

One thought i had was to set everything to a var for its use and create a new entry in the array for the client / schedule …Thoughts?

Example data?

CLASS oma11_ew_01_fr_2300_30_s NULL 0 760000 187200 NULL
NAMES
INFO 13 0 0 0 NULL 0 0 2147483647 0 0 0 0 0 0 0 0 0 0 1411059246 2863920C5DEC11E492FD73411F055F87 1 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 3 0 6 0 0 1 0 0 0 1
KEY NULL
BCMD NULL
RCMD NULL
RES oma00_ar_den06_dp30w_sp NULL NULL NULL NULL NULL NULL NULL NULL NULL
POOL NetBackup NetBackup NetBackup NetBackup NetBackup NetBackup NetBackup NetBackup NetBackup NetBackup
FOE 0 0 0 0 0 0 0 0 0 0
SHAREGROUP ANY
DATACLASSIFICATION NULL
CLIENT oma11cfswww02 Windows-x64 Windows2008 0 0 0 0 NULL
CLIENT oma11cfswww01 Windows-x86 Windows2003 0 0 0 0 NULL
CLIENT oma11cfsts02 Windows-x64 Windows2003 0 0 0 0 NULL
CLIENT oma11cfsts05 Windows-x86 Windows2003 0 0 0 0 NULL
CLIENT oma11cfsts04 Windows-x86 Windows2003 0 0 0 0 NULL
CLIENT oma11cfsts03 Windows-x86 Windows2003 0 0 0 0 NULL
CLIENT oma11cfsdoc01 Windows-x86 Windows2003 0 0 0 0 NULL
CLIENT oma11ccfsftp01 Windows-x64 Windows2008 0 0 0 0 NULL
CLIENT oma11ccfs01 Windows-x64 Windows2008 0 0 0 0 NULL
CLIENT oma11cfsctx01 Windows-x86 Windows2003 0 0 0 0 NULL
CLIENT oma11cfsctx02 Windows-x86 Windows2003 0 0 0 0 NULL
CLIENT oma11cfsctx03 Windows-x86 Windows2003 0 0 0 0 NULL
CLIENT oma11cfsctx04 Windows-x86 Windows2003 0 0 0 0 NULL
CLIENT oma11cfsctx05 Windows-x86 Windows2003 0 0 0 0 NULL
CLIENT oma00cfsctx02 Windows-x86 Windows2003 0 0 0 0 NULL
CLIENT oma00cfsctx01 Windows-x86 Windows2003 0 0 0 0 NULL
INCLUDE ALL_LOCAL_DRIVES
SCHED Full 0 1 604800 0 0 0 0 NULL 0 0 0 0 0 0 -1 0 0 0
SCHEDWIN 0 0 0 0 0 0 0 0 0 0 82800 25200 0 0
SCHEDRES NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
SCHEDPOOL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
SCHEDRL 0 1 1 1 1 1 1 1 1 1
SCHEDFOE 0 0 0 0 0 0 0 0 0 0
SCHEDSG NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
SCHED Diff 1 1 86400 0 0 0 0 NULL 0 0 0 0 0 0 -1 0 0 0
SCHEDWIN 82800 25200 82800 25200 82800 25200 82800 25200 82800 25200 0 0 82800 25200
SCHEDRES NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
SCHEDPOOL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
SCHEDRL 0 1 1 1 1 1 1 1 1 1
SCHEDFOE 0 0 0 0 0 0 0 0 0 0
SCHEDSG NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL

Here is what i have so far. The problem i have is the $schedwins gets processed twice as it should, but i need it to only run the one instance. Meaning $scheds[0] matches $schedwins[0] and so on down the iterations. What would be the bset way to handle that?