The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

#!/usr/bin/env perl -w
use strict;
use Test;
my %local_checks = (
AT => ['V12345678', '123456789', 'U1234567', 'U123456789'],
BE => ['1234567890', '01234567', '012345678L'],
BG => ['12345678', '12345678901', '012345678L'],
CY => ['12345678', '1234567A', '123456789A'],
CZ => ['1234567', '12345678901', '123456A890'],
DE => ['12345678A', '1234567A', '123456789A'],
DK => ['1234567','123456789', '12345 78 90'],
EE => ['12345678', '1234567A', '123456789A'],
EL => ['12345678', '1234567A', '123456789A'],
ES => ['12345678', 'A234567B9'],
FI => ['1234567', '123456789', '1234567L'],
FR => ['12 45678901A', 'A245678901', '1B 4567890123', 'AB 45678901'],
GB => ['123 5678 0A', '123 5678 1B 234','GD34', 'HA1234'],
HU => ['1234567', '123456789', '1234567L'],
IE => ['123456AB', '1B3456C8', '1-34567C', '1*3456C8'],
IT => ['1234567890A', '1234567890', '123456789011'],
LT => ['12345678', '123456789A12', '1234567890123'],
LU => ['1234567', '123456789', '1234567L'],
LV => ['1234567890A', '1234567890', '123456789011'],
MT => ['1234567', '123456789', '1234567L'],
NL => ['123456789012', '23456789B12', '123456789C12'],
PL => ['123456', '124567890', '123456L7'],
PT => ['1234567', '1234567A', '123456789A'],
RO => ['1', '12A', '1234567890A'],
SE => ['123456789A12', '12345678901', '01234567890123'],
SI => ['1234567', '123456789', '1234567L'],
SK => ['123456789', '12345678901', '123456789L']
);
my $tests = 0;
for my $ms (keys %local_checks) {
$tests+= $#{$local_checks{$ms}} + 1
}
plan tests => $tests;
my $hvat=Business::Tax::VAT::Validation->new();
for my $ms (keys %local_checks) {
for my $t (@{$local_checks{$ms}}) {
my $res=$hvat->local_check($t, $ms);
if (!$res){
ok(1);
} else {
warn("Local check for $ms$t failed");
}
}
}
exit;
__END__