perl的-T函数真正做什么?在perlfunc的手册页中:

-T  File is an ASCII text file (heuristic guess).
-B  File is a "binary" file (opposite of -T).
-B选项是否简单地等同于! -T,还是仅仅是启发式的倒置,以使在某些情况下-B和-T都可能是一个文件。试探法是否具有控制字符的阈值?它会忽略制表符,EOL,EOF和NUL吗?

最佳答案

same page:

-T和-B开关的工作方式如下。
检查文件的第一个块左右,以查看它是否是包含非ASCII字符的有效UTF-8。如果是,那么它是-T文件。否则,将检查文件的同一部分中是否有奇怪的字符,例如奇怪的控制代码或设置了高位的字符。如果超过三分之一的字符是奇怪的,则为-B文件;否则,为-B文件。否则,它是-T文件。同样,在检查的部分中任何包含零字节的文件都被视为二进制文件。 (如果在包含LC_CTYPE的使用语言环境的范围内执行,则奇数字符是在当前语言环境中不可打印的内容,也不是空格。)如果在文件句柄上使用-T或-B,则将检查当前的IO缓冲区而不是第一个街区。在测试文件句柄时,-T和-B在空文件或EOF处的文件上均返回true。因为必须读取文件才能进行-T测试,所以在大多数情况下,您首先要对文件使用-f,就像接下来要使用-f一样,除非-f $ file && -T $ file。

关于perl - perl的-T和-B如何实现?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34852668/

10-11 12:43