我被这个不一致的调试器行为所困扰.quotemeta()调用时,该函数的行为似乎有所不同perl -d
$ perl -e 'print quotemeta("/a/b/c"),"\n"'
输出是\/a\/b\/c正确的,如下所述perldoc -f quotemeta.
现在,在调试器下,输出变为\\/a\\/b\\/c.我认为我正在使用的一些核心模块正在重新定义函数,尽管经过测试,似乎行为只发生在调试器下.调用CORE::quotemeta()返回相同的输出.
有人可以开导我吗?
谢谢!
quotemeta是一把霰弹枪,无论是否需要,都可以逃脱所有非单词字符.调试器不那么笨重; 仅引用需要它的那些字符.(反斜杠,正斜杠不会.)更重要的是,它只在检查值时执行此操作,而不是在打印时执行此操作.相比:
DB<1> x quotemeta('a/b/c')
0 'a\\/b\\/c'
DB<2> p quotemeta('a/b/c')
a\/b\/c
Run Code Online (Sandbox Code Playgroud)