use re "eval"; my @pats = ( qr/one/, qr/two/, qr/three/ ); my $joined = "(??{" . join("})|(??{", map "\$pats[$_]", 0..$#pats) . "})"; my $any = qr/$joined/;