#! /usr/bin/perl -w use strict; use diagnostics; my %uid_re = ( BE => '\d{10}', BG => '\d{9,10}', DK => '\d{8}', DE => '\d{9}', EE => '\d{9}', FI => '\d{8}', FR => '[\dA-Z]{2}\d{9}', EL => '\d{9}', IE => '\d[\dA-Z]\d{5}[A-Z]', IT => '\d{11}', LV => '\d{11}', LT => '\d{9}|\d{12}', LU => '\d{8}', MT => '\d{8}', NL => '\d{9}B\d{2}', AT => 'U\d{8}', PL => '\d{10}', PT => '\d{9}', RO => '\d{10}', SE => '\d{10}[01]{2}', SK => '\d{10}', SI => '\d{8}', ES => '[\dA-Z]\d{7}[\dA-Z]', CZ => '\d{8,10}', HU => '\d{8}', GB => '((GD|HA)\d{3})|\d{9}|\d{12}', CY => '\d{9}' ); my $input = ; chomp $input; my $country = uc substr $input, 0, 2; my $uid = uc substr $input, 2; print 'No such member state: ', $country if(!$uid_re{$country}); print 'Formal test of ', $input, (($uid =~ /^$uid_re{$country}$/) ? ' successful' : ' failed');