コードのブロックを1行にまとめようとしています。リスト内のアイテムの数を取得する方法が必要です。私のコードは現在次のようになっています:
# 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');
それは素晴らしいことですが、私はその1行を次のように作成したいと思います。
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);