[英]Is there a less tedious way to use Perl chomp?
我经常要这样做:
#similarly in while (my $val = <$fh>){...}
my $val = <$fh>;
chomp $val;
my $res = `command`;
chomp $res;
如果可以的话,我宁愿跳过第二行。 我看到我可以在我的shebang行中使用-l选项基于: 核心Perl中是否有任何内容可以自动从“<>”运算符中选择行?
反叛有什么类似的东西吗? 或者,有没有办法让内联更简洁?
sub chomper(_) {
my ($line) = @_;
chomp($line) if defined($line);
return $line;
}
while (defined( my $line = chomper(<>) )) {
...
}
你可以围绕整个表达式包装chomp
chomp(my $date = `date`);
say $date;
有关文件句柄上某种“自动清理”的其他建议,请参阅此答案。
更新 :还有一个Backtick::AutoChomp
模块,它使用源过滤器实现。
编辑
我最初还有以下片段而没有实际测试它
while (chomp(my $line = <$fh>)) {
say $line;
}
根据池上的评论,这是不可靠的,并会以各种方式行为不端。
减少乏味的另一个选择是学会爱$_
while(<$fh>) {
chomp;
}
local $_ = <$fh>;
chomp;
local $_ = `command`;
chomp;
相同数量的线,但现在它们只有一半:)
编辑:更正了感谢@ ysth的评论,今天学到了新的东西
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.