除了下面显示的 string-as-a-filehandle 解决方案之外,有没有人可以解决一次处理多行字符串的任务?
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 );
我不想使用文件句柄的理由很弱。当我在任何文件句柄上的打开命令和关闭命令之间有超过 10 条源代码行时,Test::Perl::Critic 会发牢骚。我正在对 $single_line 进行相当多的处理,所以在我的公开通话和关闭通话之间实际上有大约 40 行代码,我看不出有任何方法可以将其减少到 10 行。
而且我真的不想忽略构建中的 Perl::Critic 测试,因为这实际上是一个体面的测试,每当我在代码中打开一个实际的磁盘文件时,我都想通过它。