Как я могу проверить, является ли содержимое по каналу текста с Perl - PullRequest
1 голос
/ 23 января 2012

Я написал 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.

Я провел симуляцию с помощью файловой программы и Perl с помощью текстового и двоичного файла (text.txt, icon.png):

find -type f | xargs -i / bin / bash -c 'if $ (cat {} | file - | egrep -q "text $"); затем эхо "{}: текст"; else echo "{}: двоичный"; фи '

. / Text.txt: текст ./icons.png: двоичный файл

find -type f | xargs -i / bin / bash -c 'if $ (cat {} | perl -wln -e "-T;"); затем эхо "{}: текст"; else echo "{}: двоичный"; фи '

. / Text.txt: текст ./icons.png: текст

1 Ответ

2 голосов
/ 23 января 2012

Вы тестируете код выхода perl, но никогда не устанавливаете его.Вам нужно

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