ためになるホームページ お問い合わせ




TOP > Perl > 文字列処理とソート
index関数
一致する箇所のインデックスを調べる。見つからなかった時は-1を返す
(書式) 見つかった位置 = index "検索対象文字列", "検索文字列", [検索開始位置];

index関数の例
$str = "abcdefg";
$pat = "cde";
$ind = index $str, $pat;


rindex関数
最後に見つかった位置を返す。
(書式) 見つかった位置 = rindex "検索対象文字列", "検索文字列", [返す最大の値];

ソートサブルーチン
あるリストのソートをする時、自分で何の順番に並べるかをサブルーチンで定義する。
この時perl内で比較対象値(2つの値)は自動的にサブルーチン内の変数$a、$bを用意してくれるので、何の順に並ばせるのかのみをコーディングすればよい。

ソートサブルーチンの例
sub by_numbers
{
  #昇順に並べる
  #$aが$bよりも先に現れるなら-1を返し、$bの方が先に現れるなら1を返す
  if ($a < $b) { -1 } elsif ($a > $b) { 1 } else { 0 };
}
@array = (3, 4, 7, 1, 5, 9, 6);
@result = sort by_numbers @array;
print @array;

#上記の条件式にはショートカットが用意されている。(スペースシップ演算子)
#サブルーチンの書き換え
sub by_numbers
{
  #昇順
  $a <=> $b;
  #降順
  #$b <=> $a;
}
#上記のソートはインラインを使い、更に短く書く事ができる。
@result = sort { $a <=> $b } @array;







Copyright 2007 ためになるホームページ All Rights Reserved.