Решение, которое отлично подходит, если вы собираетесь проверить, есть ли много чисел в $ num_list:
my $pat = join '|', map quotemeta, split " ", $num_list;
my $re = qr/^(?:$pat)\z/;
$num =~ $re
Решение, которое отлично подходит, если вы собираетесь проверить, много ли чиселв $ num_list:
my %num_list = map { $_ => 1 } split " ", $num_list;
$num_list{$num}
Решение, не требующее регулярного выражения (отлично подходит для SQL):
index(" $num_list ", " $num ") >= 0
Простые решения:
" $num_list " =~ / $num /
$num_list =~ /(?<!\S)$num(?!\S)/
$num_list =~ /\b$num\b/
grep { $_ == $num } split " ", $num_list