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

Bil*_*kas 3 perl stdin loops

我怎样才能第二次打开STDIN?

假设我有这些数据

John Smith  25  O   ATG 180
Peter Jackson   40  AB  GGTA    173
Carl Anderson   32  A   GGT 172
Run Code Online (Sandbox Code Playgroud)

我有这个代码

while( my $line = <>)  {
    print $line;
}
while( my $line = <>)  {
    print $line;
}
Run Code Online (Sandbox Code Playgroud)

我想要它打印

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
Run Code Online (Sandbox Code Playgroud)

Tom*_*Tom 9

你不能,你已经清空了流.如果要再次使用它,请将行放在数组中.

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

foreach my $line (@lines)  {
    print $line;
}
Run Code Online (Sandbox Code Playgroud)

或者,写入文件并在文件上获取文件句柄.


sal*_*lva 5

如果STDIN附加到文件,那么你可以seek(STDIN, 0, 0),但一般来说,你不能做你想要的.