use 5.010; use strict; use warnings; my $CLASSIFIER = qr{ (? \d{2}.\d{2}.\d{2} ) | (? \d{2}.\d{2}.\d{4} ) | (? [A-Z]{2}\d{9}[A-Z]{2} ) | (? \d{16} ) | (? \d{13} ) }x; while (my $input = ) { chomp $input; my $answer = $input =~ /^$CLASSIFIER$/ ? (keys %+)[0] : 'unknown'; print "$input is $answer\n"; } __DATA__ 12 12 17 09 30 2O17 09 30 2017 09 30 12017 123123123123123 1231231231231231 12312312312312312 456456456456 4564564564567 45645645645678 QW123456789WQ