0

ファイルを開いて関数に渡し、100行のチャンクで読み取ろうとしています。これを行うには、次のことを行いました。

open my $fh, '<', $file or die "Unable to open the file: $!";
#get the header out
my $header = <$fh>;
my @columns =  get_column_headers($header);
getData($fh, 100);

...

sub getData {
  my $fh = shift;
  my $maxLines = shift;
  my $count = 0;
  while (my $line = <$fh> && $count < $maxLines) {
        print "line is : $line \n"; 
  }
}

この出力行は次のとおりです。 1
オープン後に $fh で print ref を実行し、それを getData に渡すと、GLOB が出力されます。読み取った行数であると想定する「1」ではなく、実際に残りの行を取得するにはどうすればよいですか? 私は何を間違っていますか?

4

2 に答える 2

5

ただの優先順位の問題。

my $line = <$fh> && $count < $maxLines

意味

my $line = ( <$fh> && $count < $maxLines )

だから括弧を追加

( my $line = <$fh> ) && $count < $maxLines

ああ、インクリメントするのを忘れていました$count

( my $line = <$fh> ) && ++$count <= $maxLines
于 2013-10-22T01:43:11.637 に答える