如何在perl中将变量用作正则表达式修饰符?
我正在编写一个抽象函数,它将询问用户一个给定的问题,并根据给定的正则表达式验证答案.重复该问题,直到答案与验证正则表达式匹配.但是,我还希望客户端能够指定答案是否必须符合大小写.所以这样的事情:
sub ask { my ($prompt,$validationRe,$caseSensitive) = @_; my $modifier = ($caseSensitive) ? "" : "i"; my $ans; my $isValid; do { print $prompt; $ans = <>; chomp($ans); # What I want to do that doesn't work: # $isValid = $ans =~ /$validationRe/$modifier; # What I have to do: $isValid = ($caseSensitive) ? ($ans =~ /$validationRe/) : ($ans =~ /$validationRe/i); } while (!$isValid); return $ans; } Upshot:有没有办法动态指定正则表达式的修饰符? 解决方法
来自perldoc perlre:
这给了你一些东西 $isValid = $ans =~ m/(?$modifier)$validationRe/; 在以这种方式接受用户输入时,请务必采取适当的安全预防措施. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |