perl中<>的默认文件源

前端之家收集整理的这篇文章主要介绍了perl中<>的默认文件源前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想通过<>读取数据操作符.

它从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;

猜你在找的Perl相关文章