Perlの配列の添字についての質問です。

配列の値から値の添字を調べるやり方を知りたい
rubyにはindexメソッドがあり、
下記が例
---
train = ["local","rapid","express"]
puts train.index("local")
puts train.index("express")
---
0
3
---
の用に簡単に添字を検索できます。
同様の事をPerlで実現するにはどのようにすればいいのでしょうか、簡単なメソッドは存在するでしょうか。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/12/26 23:41:06
  • 終了:2012/12/28 12:29:51

ベストアンサー

id:tokuhirom No.2

''''"/><input ="回答回数8ベストアンサー獲得回数42012/12/27 09:15:59

ポイント200pt

use strict;
use warnings;
use 5.010000;

use List::MoreUtils 'first_index';

my @train = qw(local rapid express);
say first_index { $_ eq 'local' } @train;
say first_index { $_ eq 'express' } @train;

id:nex-yk

なるほどです、List::MoreUtilsモジュールはこんな風につかうんですね、やってみたら出来ました。ありがとうございます。

2012/12/28 12:16:10
id:nex-yk

やっぱり、perlの場合モジュールの活用が一番スッキリ書けるようですね、今回はこの記事をベストアンサーにしたいと思います。ありがとうございました。

2012/12/28 12:27:10

その他の回答(3件)

id:Cherenkov No.1

Cherenkov回答回数1503ベストアンサー獲得回数4932012/12/27 07:52:53

id:nex-yk

この記事は%ハッシュの場合の事ですね、今回は@配列の添字を呼び足したいのです。

2012/12/28 12:14:41
id:tokuhirom No.2

''''"/><input ="回答回数8ベストアンサー獲得回数42012/12/27 09:15:59ここでベストアンサー

ポイント200pt

use strict;
use warnings;
use 5.010000;

use List::MoreUtils 'first_index';

my @train = qw(local rapid express);
say first_index { $_ eq 'local' } @train;
say first_index { $_ eq 'express' } @train;

id:nex-yk

なるほどです、List::MoreUtilsモジュールはこんな風につかうんですね、やってみたら出来ました。ありがとうございます。

2012/12/28 12:16:10
id:nex-yk

やっぱり、perlの場合モジュールの活用が一番スッキリ書けるようですね、今回はこの記事をベストアンサーにしたいと思います。ありがとうございました。

2012/12/28 12:27:10
id:JULY No.3

JULY回答回数966ベストアンサー獲得回数2472012/12/27 09:52:06

ポイント50pt

ここに、いくつか例があります。
How do I find the index of a specific array value?

一番シンプルなのは、最初にあるこれかなぁ。

my @array = qw( your array here );
my $search_for = "here";
my( $index )= grep { $array[$_] eq $search_for } 0..$#array;

範囲演算子を使うところがミソですね。あと、grep の戻り値はリストなので、受ける変数を

my @indexes = grep { $array[$_] eq $search_for } 0..$#array;

とするだけで、該当した要素の、全てのインデックス番号を取得出来ます。

何れにしても、ruby の index メソッドのような、「これを呼び出せば一発で」という物は無いと思います。

id:nex-yk

アドバイスありがとうございます、そうですね、「これを呼び出せば一発で」みたいなものはいまのところperlにはなさそうですね。

2012/12/28 12:22:50
id:rsc96074 No.4

rsc回答回数4394ベストアンサー獲得回数4022012/12/27 18:20:18

ポイント50pt

 たぶんないんじゃないのかなぁ。下の表を見てみましたが、空欄でした。(^_^;
●配列操作の比較表: Ruby, Python, JavaScript, Perl, C++ - bkブログ
http://0xcc.net/blog/archives/000043.html

 ちなみに、上様二つの合わせ技ですが、…。(^_^;

my @train = qw(local rapid express);
print my( $index )= grep { $train[$_] eq "local" } 0..$#train;
print "\n";
my( $index )= grep { $train[$_] eq "express" } 0..$#train;
print "$index \n";
id:nex-yk

配列操作の比較表の記事は一覧になっててわかりやすいですね、この記事を見る限り配列操作に関してはrubyは充実してますね。
アドバイスありがとうございます。

2012/12/28 12:26:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません