Это - некоторый код для нахождения слова, символов, строк в файле. Кто-либо может объяснить цикл с условием продолжения?
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");
<>
ромбовидный оператор. Используя его в некоторое время цикле совпадает с
while (defined($_ = readline FILE)) {
Так, это читает файл линию за линией, присваивая содержание каждой строки переменной темы $_
.
++
оператор добавляет тот к переменной.
+=
оператор добавляет, что righthandside оценивают lefthandside. продолжительности возвратов длины строки.
разделение разделяет строку на регулярном выражении. Здесь, \s+
используется, что означает один или несколько пробельных символов. Вызов скаляра на результате возвращает полученное число элементов.
Принятие это - 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