加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl中<>的默认文件源

发布时间:2020-12-16 06:19:17 所属栏目:大数据 来源:网络整理
导读:我想通过读取数据操作符. 它从stdin或指定为脚本args的文件中读取数据 但是,如果没有提供STDIN,也没有指定文件,我想从默认文件路径中读取数据; 所以,应该是这样的 my $file = '';if ($ARGC) { open $file,'default.txt'; }while ($file) # if no ARGs it sho
我想通过<>读取数据操作符.

它从stdin或指定为脚本args的文件中读取数据

但是,如果没有提供STDIN,也没有指定文件,我想从默认文件路径中读取数据;

所以,应该是这样的

my $file = '';
if ($ARGC) { open $file,'<default.txt'; }
while (<$file>)  # if no ARGs it should be <>
{
   do_all;
}

解决方法

<> operator从@ARGV读取输入文件名列表.因此,设置默认输入文件名的一种方法是检查@ARGV是否为空,如果是,则将默认文件名推送到其上:

push @ARGV,"default.txt" unless @ARGV;

我不确定你所说的“没有STDIN”是什么意思,但如果你的意思是你希望你的脚本从foo.txt而不是default.txt中读取,如果被调用,例如:

perl script.pl < foo.txt

要么:

cat foo.txt | perl script.pl

然后通过使用-t file test检查STDIN是否正在从终端读取来执行此操作.如果STDIN不是tty,则很可能是管道或文件,因此您应该尝试从中读取:

push @ARGV,"default.txt" unless @ARGV or !-t STDIN;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读