如何判断我的程序是否被管道传输到另一个(Perl)

前端之家收集整理的这篇文章主要介绍了如何判断我的程序是否被管道传输到另一个(Perl)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
“ls”在输出输出时的行为不同:
> ls ??? 
bar  foo 
> ls ??? | cat 
bar 
foo

它如何知道,我将如何在Perl中执行此操作?

解决方法

在Perl中,-t文件测试运算符指示文件句柄
(包括STDIN)连接到终端.

还有-p测试运算符来指示文件句柄
附在管道上.

$perl -e 'printf "term:%d,pipe:%d\n",-t STDIN,-p STDIN'
term:1,pipe:0
$perl -e 'printf "term:%d,-p STDIN' < /tmp/foo
term:0,pipe:0
$echo foo | perl -e 'printf "term:%d,-p STDIN'
term:0,pipe:1

文件测试运算符文档在perldoc -f -X.

猜你在找的Perl相关文章