#!/usr/bin/perl use strict; use warnings; my @CS_CHECKS = ( '00012345', 'D123470', '0000123450', '0000023456', '50000123990' ); my @B_CHECKS = ( '1234', '12345', '123990', '12399' ); my $re = do { my $x = join '|', map "\Q$_", @B_CHECKS; qr/^[056]0+($x)$/ }; $_ =~ $re and print "$1 = $_\n" for @CS_CHECKS;