=================================================================== RCS file: /cvs/pta/pta_import.pl,v retrieving revision 1.5 retrieving revision 1.8 diff -u -p -r1.5 -r1.8 --- pta/pta_import.pl 2020/11/10 17:15:08 1.5 +++ pta/pta_import.pl 2020/11/10 17:42:32 1.8 @@ -19,10 +19,10 @@ use strict; # === SUBROUTINES ===================================================== -sub parse_import_file { - my $fn = $_[0]; +sub parse_import_file ($) { + my $fn = shift; my (@compiled, %bookings, %accounts, $import_type); - my $csv_account = ""; + my $csv_account; if ($fn eq "import_chase_credit.txt") { $import_type = "chase_credit"; } elsif ($fn eq "import_capital_one_credit.txt") { @@ -35,9 +35,9 @@ sub parse_import_file { chomp; next if /^(?:#|$)/; my $line = $_; - if (/^ACCOUNT/) { - $csv_account = $line; - $csv_account =~ s/^ACCOUNT\s+(\d+)$/$1/; + if (/^ACCOUNT\s+(\d+)$/) { + $csv_account and die "duplicate ACCOUNT line: $1"; + $csv_account = $1; next; } s/^(.*),\s+(\d+)\s+(\S+)// or @@ -50,11 +50,11 @@ sub parse_import_file { $accounts{$reg} = $account; } close $in; - die "CSV account not defined in $fn" if ($csv_account eq ""); + $csv_account or die "no ACCOUNT line in $fn"; return (\%bookings, \%accounts, \@compiled, $csv_account, $import_type); } -sub import_chase_credit_card { +sub import_chase_credit_card ($$$$) { my ($bookings_ref, $accounts_ref, $compiled_ref, $csv_account) = @_; my ($trans_date, $post_date, $description, $category, @@ -94,7 +94,7 @@ sub import_chase_credit_card { } } -sub import_capital_one_credit_card { +sub import_capital_one_credit_card ($$$$) { my ($bookings_ref, $accounts_ref, $compiled_ref, $csv_account) = @_; my ($trans_date, $post_date, $card_num, $description, @@ -142,13 +142,13 @@ my $fn = "import_capital_one_credit.txt"; # This ends the user-editable section to select the formatting file. my ($bookings_ref, $accounts_ref, $compiled_ref, $csv_account, $import_type) = - parse_import_file($fn); + parse_import_file $fn; if ($import_type eq "chase_credit") { - import_chase_credit_card($bookings_ref, $accounts_ref, - $compiled_ref, $csv_account); + import_chase_credit_card $bookings_ref, $accounts_ref, + $compiled_ref, $csv_account; } elsif ($import_type eq "capital_one_credit") { - import_capital_one_credit_card($bookings_ref, $accounts_ref, - $compiled_ref, $csv_account); + import_capital_one_credit_card $bookings_ref, $accounts_ref, + $compiled_ref, $csv_account; } else { die "Undefined import type: $import_type"; }