我有一个条件,找出潜台词的特定部分,在一些集中的所有行,我已经结束了与此:简化perl的地图和grep
my @missing = grep { $_ ne '' } map { $1 if m/^prefix:\s+(.+):\s+suffix$/ } @lines;
工作正常。但是在开始的时候(为了在比赛没有发生时摆脱所有的情绪线)看起来很可怕。
有没有更干净的方式做到这一点?
只是为了澄清,我这里是输入和输出我得到没有的grep:
my @lines = (
'drivel',
'prefix: matches: suffix',
'stuff',
'prefix: more: suffix'
);
my @selected = map { $1 if m/^prefix:\s+(.+):\s+suffix$/ } @lines;
print "found: $_\n" foreach @selected;
输出想要的东西:
found: matches
found: more
输出与上面得到:
found:
found: matches
found:
found: more
你的输入是什么,你想达到什么输出?可能这可以通过grep或sed单独完成。 –
只是'@missing = map /^prefix:\s+(.+):\s+suffix$/,@ lines'应该有你想要的效果。但我无法想象'@ lines'中的值会导致'map'返回一个空字符串。你可以显示你的数据样本吗? – Borodin