201034600051 1212104069140 001 4201034600051 1212104039139 001 4201034600153 1212104039140 001 4201034000375 1212104034111 001 4201034000375 1212104033180 001 4201034000375 1212104039443 001 4201034000375 1212104039232 001 4201034600039 1212104039336 001 4201034600045 1212104039252 001 #### CH 01034600051 1212104069140 001 LAB CH 01034600051 1212104039139 001 LAB CH 01034600153 1212104039140 001 LAB CH 01034000375 1212104034111 001 LAB CH 01034000375 1212104033180 001 LAB CH 01034000375 1212104039443 001 LAB CH 01034000375 1212104039232 001 LAB CH 01034600039 1212104039336 001 LAB CH 01034600045 1212104039252 001 LAB #### use warnings; use strict; my $file_to_process = $ARGV[0]; my $file_to_create = $ARGV[1]; my $curr_acctn = {}; my $first_time = "yes"; my @account_list = (); open FH1, ">$file_to_create" or die "Cannot create $file_to_create"; open FH, $file_to_process or die "Cannot open $file_to_process"; while () { chomp; &rtrim($_); my @fields = split; my $acctn = substr($fields[0],3,10); if($acctn != $curr_acctn) { if($first_time eq "yes") { $first_time = "no"; } else { #print FH1 "**************************\n"; #print FH1 "Charges for account number ----> $curr_acctn:\n"; foreach my $account (@account_list) { my $charge_code = substr($account,20,7); my $chrg_credit = substr($account,0,2); if ($chrg_credit == 42) { substr($account,0,2) = "CH "; substr($account,32,3) = " LAB"; } else { substr($account,0,2) = "CR "; substr($account,32,3) = " LAB"; } #print FH1 "The charge or credit is: $chrg_credit\n"; #print FH1 "The charge code is: $charge_code\n"; print FH1 "$account\n"; } @account_list = (); } } $curr_acctn = $acctn; push (@account_list, $_); } close FH; close FH1; sub rtrim() { $_ =~ s/\s+$//; return; }