我正在尝试将一段代码简化为一行。我需要一种方法来获取列表中的项目数。我的代码目前如下所示:
# 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);