逐字逐句读取Perl中的文本文件

Joh*_*röm 6 perl

我有一个大的(300 kB)文本文件,其中包含由空格分隔的单词.现在我想打开这个文件并逐个处理它中的每个单词.

问题是perl一次一行地读取文件(即)整个文件,这给我带来了奇怪的结果.我知道正常的方法是做类似的事情

open($inFile, 'tagged.txt') or die $!;
$_ = <$inFile>;
@splitted = split(' ',$_);
print $#splitted;
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误的字数(太大的数组?).

是否可以逐字阅读文本文件?

squ*_*guy 5

而不是一下子读取它,尝试逐行的方法,这也更容易在您的机器的内存使用上(虽然300 KB对于现代计算机来说不是太大).

use strict;
use warnings;

my @words;
open (my $inFile, '<', 'tagged.txt') or die $!;

while (<$inFile>) {
  chomp;
  @words = split(' ');
  foreach my $word (@words) { # process }
}

close ($inFile);
Run Code Online (Sandbox Code Playgroud)


Rob*_*arl 4

要一次读一个字,请将输入记录分隔符 ( $/) 更改为空格:

local $/ = ' ';
Run Code Online (Sandbox Code Playgroud)

例子:

#!/usr/bin/perl
use strict;
use warnings;

use feature 'say';

{
    local $/ = ' ';

    while (<DATA>) {
        say;
    }
}

__DATA__
one two three four five
Run Code Online (Sandbox Code Playgroud)

输出:

one 
two 
three 
four 
five
Run Code Online (Sandbox Code Playgroud)