为什么这个遗留代码在调用open()时使用文件名中的cat?

cow*_*god 1 regex perl file-io

我在遗留的Perl应用程序中遇到了一段非常奇怪的代码.这里的代码是本土RSS阅读器的一部分,它执行一些缓存以防止被列入黑名单.

open(CAT, "/usr/bin/cat -v /tmp/cat-cache 2>&1|");
Run Code Online (Sandbox Code Playgroud)

原作者是否可能通过cat -v去除非打印字符来处理任意数量的字符集?使用Perl本身的正则表达式会不会更有意义?而且,最让我感到困惑的是管道.

Ron*_*age 11

看起来"cat -v"显示文件中的所有非打印字符,因此您可以实际查看CRLF,TAB等.

管道是Perl如何识别open命令,这不是一个简单的文件,而是打开该命令的管道输出.