#!/usr/bin/perl-Tw use strict; use Text::ParseWords; my $fname = "CommaSample.dat"; my $pretty = 1; my $ADR_Ind = 0; my $PER_Ind = 0; my $EMP_Ind = 0; my @PER_Data; my @major_PER_Data; BARE: { my ($toggle, @data) = (''); open FH, "< $fname" or die "Cannot open datfile: ", $!; while () { if (/"PER"/) { $toggle = 1, next if /^"PER"\s*$/; } elsif (/^"EMP"\s*$/) { $toggle = 2, next if /^"EMP"\s*$/; } elsif (/^"ADR"\s*$/) { $toggle = 3, next if /^"ADR"\s*$/; } last if /^"EOS"\s*$/; die "Unknown or missing record tag: Got $_ on line $., datafile $fname.$/" if $toggle eq ''; chomp; @data = "ewords('\s+', 0, $_); if ($toggle == 1) { my $Per_Entity = $data[0]; my $Name = $data[1]; my $Color = $data[2]; my $Date = $data[3]; $toggle = 0; @PER_Data = ($Per_Entity, $Name, $Color, $Date); push @major_PER_Data, \@PER_Data; } $toggle = ''; print $/ if $pretty; } print $/; } print "Personal Data...\n"; foreach my $item (@major_PER_Data) { foreach my $subitem (@{$item}) { print $subitem,"\n"; } }