Есть ли у кого-нибудь решение задачи по обработке многострочной строки по одной строке за раз, кроме решения со строкой-как-файлом-дескриптором, показанного ниже?
my $multiline_string = "line one\nline two\nline three\nline four";
my $filehandle;
open( $filehandle, '<', \$multiline_string )
or croak("Can't open multi-line string as a filehandle: $!");
while ( defined (my $single_line = <$filehandle>) ) {
# do some processing of $single_line here ...
}
close( $filehandle );
Моя причина отказа от использования файлового дескриптора довольно слабая. Test :: Perl :: Critic скулит, когда у меня есть более 10 строк исходного кода между моей командой open и командой close в любом дескрипторе файла. Я немного занимаюсь обработкой $ single_line, так что на самом деле у меня есть около 40 строк кода между моим открытым вызовом и моим закрытым вызовом, и я не вижу способа снизить это значение до 10.
И я действительно не хочу игнорировать тест Perl :: Critic в моей сборке, потому что это действительно достойный тест, который я хотел бы пройти, когда я открываю фактический файл на диске в своем коде.