Kur*_*cht 2 perl multiline filehandle perl-critic
有没有人能够解决一次处理多行字符串的任务,除了下面显示的字符串作为文件句柄解决方案?
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 );
Run Code Online (Sandbox Code Playgroud)
我不想使用文件句柄的原因相当薄弱.Test :: Perl ::当我在任何文件句柄上打开命令和关闭命令之间有超过10个源代码行时,批评者会发牢骚.我正在对$ single_line进行相当多的处理,所以在我的公开通话和近距离通话之间我实际上有大约40行代码,我没有看到任何方法将其降低到10.
而且我真的不想忽略我的构建中的Perl :: Critic测试,因为这实际上是一个不错的测试,我想在我的代码中打开一个实际的磁盘文件时通过它.
通过创建子程序并使用文件的每一行调用它,让Perl Critic感到高兴,让自己更快乐.
use strict; use warnings;
sub do_something {
my ($line) = @_;
# do something with $line
}
open my $fh, '<', \$multiline_string
or die "Cannot open scalar for reading: $!";
while(<$fh>) {
chomp;
do_something($_);
}
close $fh;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
527 次 |
| 最近记录: |