【发布时间】:2009-07-10 22:28:06
【问题描述】:
我正在尝试用 Perl 制作一个动态模式测试器。 基本上它会要求您输入模式,然后给您一个 >>>> 提示,您可以在其中输入可能的匹配项。如果匹配,则显示“匹配后匹配部分之前的%%%%”,如果不匹配,则显示“%%%!不匹配的字符串”。这样做很简单:
while(<>){
chomp;
if(/$pattern/){
...
} else {
...
}
}
但我希望能够输入/sometext/i 这样的模式,而不仅仅是sometext
我想我会为此使用 eval 块?我该怎么做?
【问题讨论】:
-
也许你应该只使用 Devel::REPL 而不是自己编写。
-
是为了学习 Perl,不是为了项目
-
我很困惑:出于练习的目的,为什么不能你只使用
/$pattern/i?话虽如此,不要忘记您总是可以通过其他方式解决问题:更改您正在测试的字符串(使其全部高位或全部低位)而不是更改匹配项。这在处理简单的用户输入(捕捉拼写错误)时通常很有用:Q 或 q、Quit、quIt 等。 -
我是在练习的基础上建立起来的——我并不是希望它一直匹配任何情况,而是我希望能够指定整个来自输入的正则表达式。这是我自己的练习