my $pin; 1 while ( $pin = pin() ) =~ /\A\d{4}\z/; my $digits = "\0" x 10; do { substr $digits, $_, 1, $_ for pin() =~ /\d/g; } until $digits =~ /\A\d{10}\z/;