#!/usr/perl5/5.6.1/bin/perl $[ = 1; # set array base to 1 $FS = '|'; ##SUBSEP = "|"; while (<>) { ($Fld1,$Fld2,$Fld3,$Fld4,$Fld5,$Fld6,$Fld7,$Fld8,$Fld9,$Fld10,$Fld11,$Fld12,$Fld13,$Fld14,$Fld15,$Fld16,$Fld17,$Fld18,$Fld19,$Fld20,$Fld21,$Fld22,$Fld23, $Fld24,$Fld25,$Fld26,$Fld27,$Fld28,$Fld29,$Fld30,$Fld31,$Fld32,$Fld33,$Fld34,$Fld35,$Fld36,$Fld37,$Fld38,$Fld39,$Fld40,$Fld41,$Fld42,$Fld43,$Fld44,$Fld45,$Fl d46,$Fld47,$Fld48,$Fld49,$Fld50,$Fld51,$Fld52,$Fld53,$Fld54,$Fld55,$Fld56,$Fld57,$Fld58,$Fld59,$Fld60,$Fld61,$Fld62,$Fld63,$Fld64,$Fld65,$Fld66,$Fld67) = split(/[|\n]/, $_, 9999); if (!($Fld1 eq '800' || $Fld1 eq '801')) { $CNT{substr($Fld67, 3, 5), $Fld1, $Fld15}++; $COST{substr($Fld67, 3, 5), $Fld1, $Fld15} += $Fld14; } } foreach $l_strSwitch (keys %CNT) { @l_strParams = split($;, $l_strSwitch, 9999); printf "\n%s|%s|%s|%d", $l_strParams[1], $l_strParams[2], $l_strParams[3], $CNT{$l_strSwitch}; }