2010-12-28 7 views

答えて

3

List :: MoreUtilsはコアモジュール(AFAICS)ではないので、CPANからインストールする必要があります。少なくとも、Perl documentationはそれを文書化していません。

+0

ありがとう、私はそれが反復がない場合でも動作すると仮定します – syllogismos

+0

@RemotePath:はい、それは繰り返しなしで動作します - あなたが最後のインデックス(あなたが使うことができる関数 'lastidx')またはN番目のインデックス、または何か奇妙なものが欲しくないことをチェックしてください。 –

+0

私はnoobだから、私はモジュールを使用する方法を知りません。コアモジュールのみを使用してインデックスを取得する直接の方法はないと確信していますか? – syllogismos

1

あなたが持っていたものすべてが参考になっていれば(例えば、\$a[1])、方法がないと確信しています。しかし、あなたが言ったことを考えれば、もちろん、配列を "b"のループで検索し、見つかったときにどのインデックスにあったのかを知ることができます。 、次に使用モジュールList::MoreUtilsfirstidx(別名first_index

@a = qw(a b b c); 

use List::MoreUtils qw{ firstidx }; 

print firstidx { $_ == 'b' } @a; 

唯一の欠点を 'B' を検索するときに '答えが' 依然として1であると仮定すると、で

+0

屋私はそれを行うことができますが、ハッシュでは、あなたはハッシュを逆にすることができますし、値に基づいてキーを見つける、私は配列でそれを行う簡単な方法があるかどうか疑問に思っていた – syllogismos

6

あなたは、多くの場合、これを実行するために必要とされている場合は、あなたが(配列またはその代わりに加えて)ハッシュをしたいことがあります。

my @array = qw(a b c); 
my %hash; 
@hash{ @array } = 0..$#array; 
print $hash{b}; # 1 
+0

$によってあなたは@アレイの最後のインデックスを意味するのですか? – syllogismos

+1

@RemotePath:$#arrayは@arrayの最後のインデックスです。 $#(それの後ろに識別子はありません)は何か違っていて、非難されています。 – ysth

関連する問題