объясните цикл с условием продолжения в коде Perl?

Это - некоторый код для нахождения слова, символов, строк в файле. Кто-либо может объяснить цикл с условием продолжения?

open(FILE, "<data.txt") or die "Could not open file: $!";

my ($lines, $words, $chars) = (0,0,0);

while (<FILE>) {
    $lines++;
    $chars += length($_); //what _ stands for?
    $words += scalar(split(/\s+/, $_)); //what is /\s+/, $_
}

print("lines=$lines words=$words chars=$chars\n");
0
задан 19 October 2015 в 16:12

2 ответа

<> ромбовидный оператор. Используя его в некоторое время цикле совпадает с

while (defined($_ = readline FILE)) {

Так, это читает файл линию за линией, присваивая содержание каждой строки переменной темы $_.

++ оператор добавляет тот к переменной.

+= оператор добавляет, что righthandside оценивают lefthandside. продолжительности возвратов длины строки.

разделение разделяет строку на регулярном выражении. Здесь, \s+ используется, что означает один или несколько пробельных символов. Вызов скаляра на результате возвращает полученное число элементов.

3
ответ дан 28 July 2019 в 11:05

Принятие это - Perl, (Вы должны были ясно дать понять).

Рид man perlintro, который говорит, частично:

Files and I/O
   You can open a file for input or output using the "open()" function.
   It's documented in extravagant detail in perlfunc and perlopentut, but
   in short:

    open(my $in,  "<",  "input.txt")  or die "Can't open input.txt: $!";
    open(my $out, ">",  "output.txt") or die "Can't open output.txt: $!";
    open(my $log, ">>", "my.log")     or die "Can't open my.log: $!";

   You can read from an open filehandle using the "<>" operator.  In
   scalar context it reads a single line from the filehandle, and in list
   context it reads the whole file in, assigning each line to an element
   of the list:

    my $line  = <$in>;
    my @lines = <$in>;

, Если это недостаточно, читайте man perlfunc и man perlopentut

0
ответ дан 28 July 2019 в 11:05

Другие вопросы по тегам:

Похожие вопросы: