my $re = do { local $" = '|'; qr/^@{[map {quotemeta} @list]}$/; }; #### my @sets; for (@list) { my $str = $_; for (0..(length-1)) { $sets[$_] .= substr $str, $_, 1; } } my $re = qr/^${\join '', map {"[$_]"} @sets}$/; #### { my %test_hash; @test_hash{@list} = (); sub efficient_test { exists $test_hash{+shift}; } }