以下に示すファイルハンドルとしての文字列の解決策以外に、一度に1行ずつ複数行の文字列を処理するタスクの解決策を持っている人はいますか?
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は、ファイルハンドルのopenコマンドとcloseコマンドの間に10を超えるソース行があると泣き言を言います。$ single_lineの処理をかなり行っているので、実際には、オープン呼び出しとクローズ呼び出しの間に約40行のコードがあり、それを10に下げる方法がわかりません。
また、ビルドでPerl :: Criticalテストを無視したくありません。これは、コードで実際のディスクファイルを開くたびに合格したい、まともなテストだからです。