use strict; use Data::Dumper; ## Seperate each element of each group into an AoA my @AoA = (); my $i = 0; while () { chomp; ## split each line so each 'element' is processed as seperate line my @lines = split(']',$_); for (@lines) { if ($_) { ## Skip the blank lines created bt 'split' my $line = $_; $line =~ s/\w\[//; ## Get rid of the 'x[' push @{$AoA[$i]},$line; } } $i++ if (@lines[1] =~ /m\[/); } print Dumper(\@AoA); exit; __DATA__ ]a[1 ]b[FORTUNE BAY]1[R74]c[(9)]d[58 ]e[b g 9 Little Brown Jug-Gemfly (by Golden Elder (GB))]f[(BLINKERS) ]g[A W & Mrs P I Reynolds, T A Robinson, D J & Mrs V G Stuart & A R Waghorn ]h[Gay Stuart, Riverton ]i[Emerald green, navy blue braces & diamond armbands, emerald green cap ]j[04640]w[CANT 13 Aug H Rating 76 1600m 11 of 16 Tailend inr,btld closer inr T C Newton 58 (6) 15/15 Wnr: BRIGHTON PIER (AUS) 1:42.69 13.8L ]k[ :(46-2-7-6-6-$21145) ]m[ F(0-0-0) G(17-1-5) D(7-0-1) S(15-1-6) H(7-0-1) C(1-0-0) Dst(2-0-0) ]a[2 ]b[LUCKY LAD]1[R72]c[(10)]d[57 ]e[ch g 6 Shinko King (IRE)-Argyll Dazzler (by Tarrago (ITY))]f[(BLINKERS) ]g[D H F Green ]h[Kevin Hughes, Riccarton Park ]i[Emerald green & light blue diagonal stripes, striped sleeves & cap ]j[X3333]w[CANT 10 Aug H Rating 76 1800m 3 of 15 Trld ldr,2nd tn,fght mid N G Harris 57 (4) 1/1 Wnr: SHRKAN 2:01.69 4.5L ]k[ :(28-1-4-7-2-$12688) ]m[ F(0-0-0) G(13-0-4) D(7-0-3) S(6-1-3) H(2-0-1) C(0-0-0) Dst(3-0-2)