此脚本仅循环一次。我想让它成为一个无限循环。
open( FILE, "<$ARGV[0]" );
if ( $LOOP == 1) {
while ( <FILE> ) {
if ( $. == $LOOP ) {
next
};
}
}
while ( <FILE> ) {
$LIST = $_;
print "$LIST";
}
我想让它循环回到第一行,就像这样
abc
abcd
abcde
abc
abcd
abcde
...
答案 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;
}
它应该打开文件,读入文件,关闭文件,打印内容然后重复。