perl - 如何在 perl 中重新打开 STDIN <>?

标签 perl stdin loops

如何第二次打开 STDIN?

假设我有这个数据

John Smith  25  O   ATG 180
Peter Jackson   40  AB  GGTA    173
Carl Anderson   32  A   GGT 172

我有这个代码
while( my $line = <>)  {
    print $line;
}
while( my $line = <>)  {
    print $line;
}

我想要它打印
John Smith  25  O   ATG 180
Peter Jackson   40  AB  GGTA    173
Carl Anderson   32  A   GGT 172
John Smith  25  O   ATG 180
Peter Jackson   40  AB  GGTA    173
Carl Anderson   32  A   GGT 172

最佳答案

你不能,你已经清空了流。如果您想再次使用它,请将这些行放入一个数组中。

my @lines;
while( my $line = <>)  {
    print $line;
    push @lines, line;
}

foreach my $line (@lines)  {
    print $line;
}

或者,写入文件并获取文件的文件句柄。

关于perl - 如何在 perl 中重新打开 STDIN <>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9617522/

相关文章:

perl - 如何使用 Perl 模块中的常量?

javascript - 带有 perl 后端的 Ajax 应用程序 - 如何?

linux - 在 while read (stdin) 循环后暂停 bash 脚本

c - C 有枚举控制循环吗?

c - 在C中重绘数组

linux - 无法在@INC 中找到 Spreadsheet/ParseExcel.pm,尽管它似乎已安装

perl - 如何在 Net::RawIP 中设置 tcp 选项(MSS 值)

C pipe() 在调用一定次数后返回错误

c - 非 STDIN 输入上的 scanf

javascript - 如何在javascript中交替使用2个循环?