为什么在调试器下Perl的quotemeta()函数表现不同?

Dex*_*rT. 4 debugging perl

我被这个不一致的调试器行为所困扰.quotemeta()调用时,该函数的行为似乎有所不同perl -d

$ perl -e 'print quotemeta("/a/b/c"),"\n"'

输出是\/a\/b\/c正确的,如下所述perldoc -f quotemeta.

现在,在调试器下,输出变为\\/a\\/b\\/c.我认为我正在使用的一些核心模块正在重新定义函数,尽管经过测试,似乎行为只发生在调试器下.调用CORE::quotemeta()返回相同的输出.

有人可以开导我吗?

谢谢!

Mic*_*man 8

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)