「初めてのPerl」 第十四章
第十四章から。
第十四章 文字列処理とソート
内容
用語集
用語 | 説明 |
---|---|
ソートサブルーチン | ソート順を定義するサブルーチン |
Point
index
# indexを使うと部分文字列を探すことが出来る my $where = index("hogehoge", "o"); #=> $whereには1が入る # 第一引数のどこに第二引数があるかが返ってくる # 0から数えて何文字目かが分かる # 見つからない場合は-1が返る # ただし最初に見つかった文字のみ # 第三引数には何文字目から探すかを指定できる my $where = index("hogehoge", "o", 4); #=> $whereには5が入る # 後ろから数える場合はrindexを使う my $where = rindex("hogehoge", "o"); #=> $whereには5が入る
substr
# substrを使うと部分文字列を取り出すことが出来る my $string = substr("hogefugapiyo", 4, 4); #=> $stringには"fuga"が入る # 第二引数には開始位置、第三引数には文字数を入れる # 第一引数の文字列から指定した位置の文字を取り出す # 第二引数に負の値を指定すると後ろから開始位置を指定する my $string = substr("hogefugapiyo", -4, 4); #=> $stringには"piyo"が入る
sprintf
# sprintfで文字列のフォーマットを指定できる my $string = sprintf("%s fuga %s", "hoge", "piyo"); #=> $stringには"hoge fuga piyo"が入る my $date = sprintf("%4d-%2d-%2d", 2014, 7, 13); #=> $dateには"2014-07-13"が入る my $num = sprintf("%.2f", 2.4999); #=> $numには2.50が入る
ソートの順番を指定したい
# sortに対してソートサブルーチンを定義できる my @some_numbers = (4, 8, 2, 5); my @numbers = sort { $a <=> $b } @some_numbers; #=> @numbersには(2, 4, 5, 8)が入る my @some_strings = qw/d a c b/; my @strings = sort { $a cmp $b } @some_strings; #=> @stringsには("a", "b", "c", "d")が入る # これは非常に単純な例(と言うよりソートサブルーチンを定義しなくても良い) # もっと複雑なsortをしたい場合に使うと良い # ハッシュの要素に対してソートしたい場合は my %hash = ("a" => 1, "b" => 3, "c" => 2); my @result = sort { $hash{$a} <=> $hash{$b} } keys %hash; #=> @resultいは("a", "c", "b")が入る # これはvalueの数値でソートしている
次回は
次回は第十五章から。