Я вывожу номера строк из текстового файла для случаев, когда происходит усечение.Успешно получаю вывод для большинства усеченных строк.
Однако усеченный линейный выход отключен на 2.Вот что происходит в моем коде:
Rain
, строка, находится в строке 1 входного текстового файла (см. Ниже).Применен RegExp s/.{4}\K.*//s
для усечения до 4 и Rain
выходных данных, усеченных, даже если он не был усечен (Rain
- это 4 символа, сокращать его не нужно).Кроме того, бывает за 5 s/.{5}\K.*//s
.
Правильно, код выводит усеченную строку при усечении на 3 или меньше.
Как я могу показать, что не происходит усечение при использовании s/.{4}\K.*//s
и s/.{5}\K.*//s
?Другими словами, когда я запускаю свой код для усечения на 4 или 5, Rain не отображает вывод усечения для номера строки.
Мой текстовый файл - weather.txt:
Rain
Snow
Здесьмой код:
#!/usr/bin/perl
use strict;
use warnings;
my $input = 'weather.txt';
open my $fhIn, '<', $input or die qq(Unable to open "$input" for input: $!);
my @lines;
while( <$fhIn>) {
chomp(@lines);
push @lines, $. if s/.{5}\K.*//s;
}
my $max = @lines;
my $none = '-';
my $fmt = "%-20s\n";
print sprintf($fmt, "Column 1");
foreach my $i (0..$max-1) {
print sprintf($fmt, ($lines[$i] or $none), ($lines[$i] or $none));
}