gpt4 book ai didi

Perl 根据命令行参数设置文件句柄

转载 作者:行者123 更新时间:2023-12-04 22:43:40 27 4
gpt4 key购买 nike

如果数据通过管道输入或提供文件,我想从默认输入中读取,但如果没有提供任何内容,我想为 while(<>) 提供默认值执行。

伪代码:

if(!<>){
<> = system("ls | ./example.pl");
}

while(<>){
...
...
...
}

最佳答案

您的“如果数据通过管道输入”使事情变得困难。说起来容易

if (!@ARGV) {
@ARGV = ("somedefault");
}

while (<>) {
...
}

如果命令行上没有给出文件名,它将在“somedefault”上运行——但这意味着如果命令行上没有任何文件名,你将永远不会获得从 stdin 读取的 Perl 默认值。

一种可能的折衷方案是使用 -t operator猜测 stdin 是否是一个终端:

if (!@ARGV && -t STDIN) {
@ARGV = ("somedefault");
}

如果命令行上没有文件名并且标准输入连接到终端,它将使用“somedefault”,但如果没有文件名并且标准输入是从文件重定向的,它将使用标准输入,或者管道。这有点神奇(也许很烦人),但可以满足您的要求。

关于Perl 根据命令行参数设置文件句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9027831/

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