Perl - 如何获取匿名数组中的元素数量,以便简洁地修剪路径名

NXT*_*NXT 6 arrays perl slice

我试图将一段代码缩减到一行.我需要一种方法来获取列表中的项目数.我的代码目前看起来像这样:

# Include the lib directory several levels up from this directory
my @ary = split('/', $Bin);
my @ary = @ary[0 .. $#ary-4];
my $res = join '/',@ary;
lib->import($res.'/lib');
Run Code Online (Sandbox Code Playgroud)

这很好,但我想制作一行,如下所示:

lib->import( join('/', ((split('/', $Bin)) [0 .. $#ary-4]))  );
Run Code Online (Sandbox Code Playgroud)

但是当然$#ary在上面的行中语法没有意义.

是否有相同的方法来获取匿名列表中的元素数量?

谢谢!

PS:合并这个的原因是它将在一堆perl脚本的标题中,这些脚本是主应用程序的辅助,我希望这个小咒语更多的剪切和粘贴证明.

感谢大家

似乎没有匿名列表中元素数量的简写.这似乎是一种疏忽.然而,建议的替代方案都很好.

我要去:

lib->import(join('/', splice( @{[split('/', $Bin)]}, 0, -4)).'/lib');
Run Code Online (Sandbox Code Playgroud)

但Ether提出了以下建议,它更加正确和便携:

my $lib = File::Spec->catfile(
                realpath(File::Spec->catfile($FindBin::Bin, ('..') x 4)),
               'lib');
lib->import($lib);
Run Code Online (Sandbox Code Playgroud)

pde*_*aan 3

lib->import(join('/', splice(@{[split('/', $bin)]}, 0, -4)).'/lib');
Run Code Online (Sandbox Code Playgroud)