Perl:从<&燃气轮机;

Perl:从<&燃气轮机;,perl,readfile,diamond-operator,Perl,Readfile,Diamond Operator,在Perl中,从读取做什么?例如,以下操作将执行什么操作 print for(<>); printfor(); 它一次读取一行标准输入,并将其存储到$\ucode>。print然后在默认情况下打印出$\uu,因为它没有参数。此程序从标准输入读取数据,并回显到标准输出,直到达到EOF。所谓的菱形运算符()从STDIN或指定为命令行参数的文件名中逐行(在标量上下文中)读取数据 发件人: 空文件句柄是特殊的:它可以用来模拟 sed和awk的行为。来自的输入来自标准 输入,或从命令行上列出

在Perl中,从
读取做什么?例如,以下操作将执行什么操作

print for(<>);
printfor();

它一次读取一行标准输入,并将其存储到
$\ucode>。print然后在默认情况下打印出
$\uu
,因为它没有参数。此程序从标准输入读取数据,并回显到标准输出,直到达到EOF。

所谓的菱形运算符(
)从STDIN或指定为命令行参数的文件名中逐行(在标量上下文中)读取数据

发件人:

空文件句柄
是特殊的:它可以用来模拟 sed和awk的行为。来自
的输入来自标准 输入,或从命令行上列出的每个文件。这是怎么回事 工作:第一次计算
时,检查
@ARGV
数组, 如果它是空的,
$ARGV[0]
被设置为
“-”
,当打开时 为您提供标准输入。然后将
@ARGV
数组作为 文件名列表


在列表上下文中,
返回所有行,每行作为列表中的一个元素存储


这意味着,
print for
将执行与
打印时相同的操作,尽管内存更多。

您已经找到了Perl最神奇的一块。嗯,我相信还有更多神奇的东西,但是这个小习惯用法使编写用于shell管道和文件操作的程序变得非常容易

在没有任何参数的情况下运行时,
将从标准输入中一次读取一行

当使用参数运行时,它会将参数视为文件名,并依次从命名文件中一次读取一行

一个简短的演示:

$ cat > print.pl
#!/usr/bin/perl -w
print for(<>);
$ chmod 755 print.pl 
$ echo hello world | ./print.pl 
hello world
$ ./print.pl print.pl 
#!/usr/bin/perl -w
print for(<>);
$ ./print.pl print.pl print.pl
#!/usr/bin/perl -w
print for(<>);
#!/usr/bin/perl -w
print for(<>);
$ 
$cat>print.pl
#!/usr/bin/perl-w
为()打印;
$chmod 755 print.pl
$echo hello world |/print.pl
你好,世界
$./print.pl print.pl
#!/usr/bin/perl-w
为()打印;
$./print.pl print.pl print.pl
#!/usr/bin/perl-w
为()打印;
#!/usr/bin/perl-w
为()打印;
$ 

我在那里手工输入程序;完全输入后,点击
^D

我点击了。由于某种原因,堆栈溢出会破坏下划线。