人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: nex-yk
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● Cherenkov
●0ポイント

[Perl]連想配列のキーの存在を調べる(exists): プログラミング研究室


nex-ykさんのコメント
この記事は%ハッシュの場合の事ですね、今回は@配列の添字を呼び足したいのです。

2 ● ''''"/><input ="
●200ポイント ベストアンサー

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;


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

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

3 ● JULY
●50ポイント

ここに、いくつか例があります。
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 メソッドのような、「これを呼び出せば一発で」という物は無いと思います。


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

4 ● rsc
●50ポイント

たぶんないんじゃないのかなぁ。下の表を見てみましたが、空欄でした。(^_^;
●配列操作の比較表: 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";

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

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ