sub dequote { local $_ = (@_ ? $_[0] : $_); s/^'//; s/'$//; s/\\(.)/$1/s; return $_; } my $list = join '|', map quotemeta, map dequote, @parts; print("=~ m/^(?:$list)\$/");