假设一个允许用户在配置文件中指定多个文本过滤器表达式的Perl脚本,是否有一种安全的方式让它们输入正则表达式,而不会有意外的副作用或代码执行?没有实际解析正则表达式并检查它们是否有问题的结构,也就是说.不会有任何替代,只有匹配.
另外,有没有办法在实际使用之前测试指定的正则表达式是否有效?如果像/ foo(bar /被输入),我想发出警告.
谢谢,Z
编辑:
感谢非常有趣的答案.我已经发现,如果使用re’eval’pragma,以下危险的结构将仅在正则表达式中进行评估:
(?{code}) (??{code}) ${code} @{code}
默认是no re’eval’;所以除非我缺少一些东西,否则从文件中读取正则表达式应该是安全的,唯一的检查是Axeman发布的eval / catch.至少我没有能够在我的测试中隐藏任何邪恶的东西.
再次感谢. Z.