在不使用-T的情况下检查文件是否是文本文件?

时间:2014-04-17 15:52:54

标签: perl

标题是非常自我解释的,perl中是否有文件测试函数,或者是否有允许文件测试操作的内置模块?

2 个答案:

答案 0 :(得分:0)

这是一个非问题-T,就像所有文件测试运算符都是perl builtins一样。

这里记录了它们:perldoc -X

  
      
  • -X FILEHANDLE
  •   
  • -X EXPR
  •   
  • -X DIRHANDLE
  •   
  • -X

         

    文件测试,其中X是下面列出的字母之一。这个一元运算符接受一个参数,可以是文件名,文件句柄或dirhandle,并测试相关文件以查看是否有关于它的内容。如果省略参数,则测试$_-t除外,测试STDIN。除非另有说明,否则返回1表示true,''表示false,如果文件不存在,则返回未定义的值。尽管有趣的名称,优先级与任何其他命名的一元运算符相同。

         

    ...

         

    -T文件是ASCII文本文件(启发式猜测)。

         

    -B文件是“二进制”文件(与-T相反)。

  •   

答案 1 :(得分:0)

"文件测试" Perl中可用的函数是编程语言本身的一部分。根据您所说的内容以及本页面上的评论,可能是您被要求不使用外部命令"因为有人认为-T标志依赖于属于底层环境的东西,而不是Perl语言。

-T是Perl固有的-X文件测试一元运算符的一部分:

http://perldoc.perl.org/functions/-X.html

-T运算符(具体)的基础是函数pp_fttext,它位于pp_sys.c。这些是构成Perl的底层代码的一部分,您可以通过查看Perl源代码分发的根目录来验证这一点:

http://www.perl.org/get.html

这可能是你最初要求的唯一方法(如何在没有-T的情况下执行此操作)可以做你被要求不做的事情(使用Perl外部的东西来执行测试)。