创建无限循环

时间:2018-01-07 22:41:38

标签: perl loops while-loop

此脚本仅循环一次。我想让它成为一个无限循环。

open( FILE, "<$ARGV[0]" );

if ( $LOOP == 1) {

    while ( <FILE> ) {

        if ( $. == $LOOP ) {
            next
        };
   }
}

while ( <FILE> ) {
    $LIST = $_;
    print "$LIST"; 
}

我想让它循环回到第一行,就像这样

abc
abcd
abcde
abc
abcd
abcde
...

3 个答案:

答案 0 :(得分:2)

使用while (1) { ... }包装您想要循环的内容。

清理,你得到:

my $qfn = $ARGV[0];

while (1) {
   open(my $fh, '<', $qfn)
      or die("Can't open \"$qfn\": $!\n");

   while (<$fh>) {
      print;
   }
}

非常小的优化是避免重新打开文件,而是寻求。

use Fcntl qw( SEEK_SET );

my $qfn = $ARGV[0];

open(my $fh, '<', $qfn)
   or die("Can't open \"$qfn\": $!\n");

while (1) {
   while (<$fh>) {
      print;
   }

   seek($fh, 0, SEEK_SET);
}

答案 1 :(得分:-1)

使用seek重置文件句柄中的位置。如果文件句柄在最后一行,则eof为真。

open FILE,'<',$ARGV[0];
while (my $line = <FILE>) {
    print $line;
    if (eof) {
        seek FILE,0,0;
    }
}

答案 2 :(得分:-2)

你可以试试这样的......

my ( $filename ) = @ARGV;

while ( 1 )
{
    open my $fh, '<', $filename or die $!;
    my @lines = <$fh>;
    close $fh;
    print @lines;
}

它应该打开文件,读入文件,关闭文件,打印内容然后重复。