如果我只想提取制表符分隔记录的第4,第5和第7个元素(比如说),我可以这样做:
my @f = (split(/\t/,$_,-1))[3,4,6];
但是,如果我想要第4个元素和“尾片”,包括从第7个元素到数组末尾的所有元素,该怎么办?我不知道如何在一行中做到这一点.我能做的最好的就是:
my @f = split(/\t/,-1); @f = @f[3,6..$#f];
在两行中执行此操作的唯一原因是我可以在第二行中指定$#f,但这需要比任务中固有的更高程度的特异性;该任务并不关心split返回的值中有多少元素.很高兴能够指定类似“从第7个元素开始可用的所有内容”……这就是我所说的“尾片”:只指定起点的切片,而终点是隐含的.
(这种规范在Unix中使用cut实用程序时很常见;例如:
... | cut -f 4,7-
)
Is there some subscripting expression that I can apply directly to the
(split(...))
subexpression to produce in one line the same effect as is achieved by the last two lines of code above?
编辑:要清楚,我要避免的是$#ARRAY构造.我知道我总能做点什么
my @f = do { my @t = split(/\t/,-1); @t[3,6..$#t] };
解决方法
原文地址:https://www.jb51.cc/Perl/171346.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。