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

标签 perl arrays 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');

太好了,但我想写一行,如下所示:
lib->import( join('/', ((split('/', $Bin)) [0 .. $#ary-4]))  );

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

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

谢谢!

PS:合并这个的原因是它会在一个
一堆附属于主应用程序的 perl 脚本,我想要这个
小咒语是更多的剪切和粘贴证明。

谢谢大家

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

我要去:
lib->import(join('/', splice( @{[split('/', $Bin)]}, 0, -4)).'/lib');

但 Ether 提出了以下建议,更正确和便携:
my $lib = File::Spec->catfile(
                realpath(File::Spec->catfile($FindBin::Bin, ('..') x 4)),
               'lib');
lib->import($lib);

最佳答案

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

关于Perl - 如何获取匿名数组中的元素数量,以简洁地修剪路径名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2799647/

相关文章:

mysql - 需要 OR 查询帮助

c# - 如何用垃圾填充字节数组?

objective-c - 数组没有正确保留?

java - 我无法打印二维数组中的最后一列

r - 如何在R中将多维下标存储为变量

go - 附加到 for 循环中的 slice 并产生意外结果

javascript - 使用 jQuery/Perl/Mechanize 处理不同单引号 (') 和 (') 的最佳方法是什么?

perl - Perl 中的校验和

regex - PERL 正则表达式 - 返回不包含条件语句的结果

go - 对于字符串 slice 的循环迭代不起作用