2023/EIQ - QUO character not allowed/105/3/7
####
147;lakjfh lkjsfh ehjd;134-324-730 31;291;24.04.2020;15 000,00;severo-vostocnoe otdelenie № 8645 pao "sberbank rossii";4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;96764128476876487264
148;lkjf fdkas fa;123-105-878 17;1;23.04.2020;15 000,00;severo-vostocnoe otdelenie № 8645 pao "sberbank rossii";4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;23236726352762456346
149;sdfg gdsgsdhsds shsddf;104-424-501 02;146;20.04.2020;15 000,00;severo-vostocnoe otdelenie pao "sberbank";4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;23236726352762456346
150;dfgsdfgsdg sdgsdgsdgsdg sdfgdsgs;095-504-250 68;68;17.04.2020;15 000,00;"aziatsko-tihookeanskiy bank" (pao) g. blagovesensk;3473446334;280101001;23452344637833423542;"aziatsko-tihookeanskiy bank" (pao) g. blagovesensk;098676868;9837542asdfaas529987;;23236726352762456346
151;sdfgds fdsgd ssdgsd;108-437-022 37;258;23.04.2020;15 000,00;severo-vostocnoe otdelenie № 8645 pao "sberbank rossii";4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;23236726352762456346
152;bgerghe egertge ertgeer;074-073-043 41;128;20.04.2020;15 000,00;severo-vostocnoe otdelenie № 8645 pao "sberbank rossii";4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;23236726352762456346
153;lskdjfa sflaskjfd aslkdfjaslf;151-533-432 32;33;22.04.2020;15 000,00;severo-vostocnoe otdelenie № 8645 pao "sberbank rossii";4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;23236726352762456346
154;lasfnf fsdafasdfas afs;134-092-549 45;21;23.04.2020;5 000,00;severo-vostocnoe otdelenie № 8645 pao "sberbank rossii";4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;23236726352762456346
155;asdfasf asdf asdfasfd;110-497-874 55;50;24.04.2020;15 000,00;severo-vostocnoe otdelenie № 8645 pao "sberbank rossii";4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;23236726352762456346
156;sadfasf asdf asdfas;456-978-244 89;117;17.04.2020;15 000,00;severo-vostocnoe otdelenie № 8645 pao "sberbank rossii";4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;23236726352762456346
157;asdfasfwer asfdasfs sadf;139-220-696 59;26;21.04.2020;15 000,00;severo-vostocnoe otdelenie № 8645 pao "sberbank rossii";4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;23236726352762456346
158;lksj ljlkjlkjl lkjljlk;133-087-587 59;262;23.04.2020;15 000,00;severo-vostocnoe otdelenie № 8645 pao "sberbank rossii";4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;23236726352762456346
159;fghd g dfghdhdfgh;141-008-388 12;241;22.04.2020;30 000,00;severo-vostocnoe otdelenie № 8645 pao "sberbank rossii";4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;23236726352762456346
160;lkkljh kljhk kjh;123-650-136 21;20;20.04.2020;15 000,00;severo-vostocnoe otdelenie № 8645 pao "sberbank rossii";4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;23236726352762456346
161;sdgfd sgdsgdsg sdfgds;154-978-292 22;93;17.04.2020;15 000,00;severo-vostocnoe otdelenie 8645 pao sberbank;4243972345;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;98375423895239529987;;23236726352762456346
162;lkdasj alsdfka sflas;112-031-647 83;61;17.04.2020;15 000,00;severo-vostocnoe otdelenie 8645 pao sberbank;7707083893;347636334;23452347344633423542;severo-vostocnoe otdelenie N8645 pao sberbank g. magadan;896868986;89686898634243972345;;23236726352762456346
####
#!/usr/bin/env perl
my $codepage = 'utf8';
use utf8;
binmode(STDOUT, ":$codepage");
binmode(STDOIN, ":$codepage");
use Text::CSV;
#get file names:
my $fileTable = shift;
my @tblRows = ();
my @fldNames = ('id', 'fio', 'snils', 'no0', 'data', 'vyplata', 'adres_bank0', 'no1', 'no2', 'no3', 'adres_bank1', 'no4', 'no5', 'blank', 'no6');
my %fldNames = ();
map { $fldNames{$fldNames[$_]} = $_ } 0..$#fldNames;
my $qtyChild = 0;
#CSV handle
$CSV_H = Text::CSV->new({
sep_char=>";",
binary=>1,
blank_is_undef=>1,
empty_is_undef=>1,
allow_whitespace=>0,
allow_loose_quotes=>1
,auto_diag=>1
});
$CSV_H->callbacks(error=>\&csverror2023);
if(open my $TBL_H, "<:encoding($codepage)", "$fileTable"){
until($CSV_H->eof){
my $row = $CSV_H->getline($TBL_H);
unless($row->[$fldNames{'id'}] !~ /^[[:digit:]]+$/ || $row->[$fldNames{'fio'}] =~ /^[[:digit:]]+$/){
map { printf "%12s: %s\n", $fldNames[$_], $row->[$_] } 0..$#{$row};
push @tblRows, $row;
}
print '=' x 100, "\n";
}
close $TBL_H;
}
sub csverror2023{
print join('/', @_), "\n";
my $charpos = $_[2];
my $srcstr = $CSV_H->error_input();
printf "ERROR_INPUT: %s\n", $srcstr;
unless($CSV_H->eof){
my $badchar = quotemeta(substr($srcstr, $charpos - 1, 1));
printf "BadChar: (%s)\n", $badchar;
my $prestr = substr($srcstr, 0, $charpos - 1);
printf "PreMatch: (%s)\n", $prestr;
$prestr =~ /$badchar[^$badchar]*$/;
printf "MATCH_iNDEXES: (%s-%s)\n", $-[0], $+[0];
printf "BadChar0: (%s)\n", substr($prestr, $-[0], 1);
substr($srcstr, $-[0], 0, '\\');
printf "ModifiedString: (%s)\n", $srcstr;
}
$CSV_H->SetDiag(0);
}
####
csv-prog.pl csv-file.csv