use strict; my $re = qr/^(\d{9}):(?:.*?(H\d{9})|)/; while() { if (/$re/) { print "\$1 = $1; \$2 = $2\n"; } } __DATA__ 410304100: 410304100 410304101 410304100: H410304100 410304101 410304100: 410304100 H410304101