我一直在研究一个现在没有维护的CPAN模块的分支(据我所知).在此模块中,它们用于$@将错误消息传递到堆栈中.换句话说,他们设置$@在子程序的任何调用中是否出现任何问题,并在调用之后检查它是否已设置.我之前从未见过这个变量,但我觉得它很有用,所以我开始在代码中使用它.现在我最近读了一些关于它的内容,发现它的目的比这更狭窄.阅读perlvar(和其他有关此问题的问题)对我来说并没有完全回答这个问题,但是,使用$@这种方式是否可以?我知道的一些"标点符号"变量绝对不应该以这种通用的方式使用(有些甚至用于local),这是其中一种情况,还是我可以继续这种做法?
在我问的另一个问题中,我试图找到一种从列表中获取子集列表(或数组)的方法,认为这可以通过切片或拼接来完成.使用数组它就像以下一样简单:
@arr[2 .. $#arr]
Run Code Online (Sandbox Code Playgroud)
获取一个数组,该数组具有从索引2处的元素到结尾的所有相同元素(即跳过前2个元素).但是,如何使用列表完成此操作,您无法使用$#arr之类的内容(因为列表没有名称).所以这就是问题,是否可以使用列表执行此类操作而无需复制到数组或使用多行代码?是否有一些简单的表示法只提取到达列表末尾的任意长度列表(无需事先知道列表的长度)?换句话说,这样的事情:
(1,2,3,4,5,6,7)[1 .. -1];
Run Code Online (Sandbox Code Playgroud)
得到的(显然不起作用)
(2,3,4,5,6,7)
Run Code Online (Sandbox Code Playgroud)
这样的符号或函数是否存在(对于列表)?