gpt4 book ai didi

perl - < UNIX 中的运算符,传递给 Perl 脚本

转载 作者:行者123 更新时间:2023-12-01 10:07:25 25 4
gpt4 key购买 nike

评估if(-t STDIN)时, < UNIX 运算符算作 STDIN 吗?如果没有,我如何获取该数据?

所以有人输入 perl example.pl < testing.txt .这不像通过 ls | ./example.pl 传输的数据.我怎样才能得到这种行为?

最佳答案

测试 -p STDIN,检查文件句柄 STDIN 是否附加到管道。

touch foo
perl -e 'print -p STDIN' < foo # nothing
cat foo | perl -e 'print -p STDIN' # 1

但我不确定我是否理解您的问题。在所有这三种情况下

1.  perl -e 'print $_=<STDIN>' < <(echo foo)
2. echo foo | perl -e 'print $_=<STDIN>'
3. perl -e 'print $_=<STDIN>' # then type "foo\n" to the console

输入是相同的,并且都可以通过 STDIN 文件句柄访问。在前两种情况下,-t STDIN 的计算结果为 false,在第二种情况下,-p STDIN 的计算结果为 true。

这三种情况之间的行为差​​异很微妙,通常并不重要。显然,第三种情况将等到至少接收到一行输入(以“\n”或 EOF 结尾)。前两种情况之间的差异更加微妙。当您的程序的输入是从另一个进程的输出通过管道传输时,您在某种程度上受第一个进程的延迟或该程序是否缓冲其输出的支配。

也许你可以扩展你说的意思

perl example.pl < testing.txt

不像

ls | ./example.pl

关于perl - < UNIX 中的运算符,传递给 Perl 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9035824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com