if (3 <= scalar grep { $str =~ /$_/ } ( # Match at least 3 of: qr/^.*(?=.{10,})(?=.*\d).*$/, qr/^.*(?=.{10,})(?=.*[a-z]).*$/, qr/^.*(?=.{10,})(?=.*[A-Z]).*$/, qr/^.*(?=.{10,})(?=.*[@#$%^&+=]).*$/ ) ) { # Do something. }