如何检查管道内容是否为带有perl的文本

时间:2012-01-23 08:46:06

标签: perl svn content-type

我为文本文件编写了一个svn-hook。内容测试如下所示:

svnlook cat -t $txn $repos $file 2>/dev/null | file - | egrep -q 'text$'

我想知道是否可以用Perl完成。但是这样的事情不起作用:

svnlook cat -t $txn $repos $file 2>/dev/null | perl -wnl -e '-T' -

我正在测试此调用的退出状态($?),以查看给定文件是文本还是二进制文件。因为我从svn获取内容。我无法使用perl的普通文件检查。

我已经使用文件和二进制文件(text.txt,icon.png)对文件程序和perl进行了模拟:

  

find -type f | xargs -i / bin / bash -c'if $(cat {} | file - | egrep -q“text $”);然后回声“{}:text”; else echo“{}:binary”;科幻“

./ text.txt:text ./icons.png:二进制

  

find -type f | xargs -i / bin / bash -c'if $(cat {} | perl -wln -e“-T;”);然后回声“{}:text”; else echo“{}:binary”;科幻“

./ text.txt:text ./icons.png:文字

1 个答案:

答案 0 :(得分:2)

您正在测试perl的退出代码,但您从未设置过它。你需要

perl -le'exit(-T STDIN ?0:1)' < file