初めてのPerl ~ 15章 文字列処理とソート ~

15.1 indexを使って部分文字列を探す。

#!/usr/bin/perl

use warnings;
use strict;

# 文字列"Howdy world!"からwが初めて出てくる位置を検索
my $shuff="Howdy world!";
my $where1=index($shuff,"w");
print "$where1\n";

# 文字列"Howdy world!"から2回目のwの位置を検索
my $where2=index($shuff,"w",$where1+1);
print "$where2\n";

# 文字列"Howdy world!"から3回目のwの位置を検索
my $where3=index($shuff,"w",$where2+1);
print "$where3\n";

# 文字列"Yabba dabba doo"の末尾から検索して初めての"abba"の位置を検索
my $fred="Yabba dabba doo";
$where1=rindex($fred,"abba");
print "$where1\n";

# 文字列"Yabba dabba doo"の末尾から検索して2回目の"abba"の位置を検索
$where2=rindex($fred,"abba",$where1-1);
print "$where2\n";

# 文字列"Yabba dabba doo"の末尾から検索して3回目の"abba"の位置を検索
$where3=rindex($fred,"abba",$where2-1);
print "$where3\n";

15.2 substrを使って部分文字列をいじる

#!/usr/bin/perl

use warnings;
use strict;

# 文字列"Fred J. Flintstone"の8番めの位置から5文字取得
my $mineral = substr "Fred J. Flintstone",8,5;

# 文字列"Fred J. Flintstone"の13番めの位置から末尾までを取得
my $rock = substr "Fred J. Flintstone",13;

# 文字列"some very long string"の末尾から3番めから2文字取得
my $out = substr "some very long string",-3,2;

# index関数で、文字"l"の位置を検索(結果:15)
# 文字列"some very very long string"の15番めの位置から末尾までを取得
my $long = "some very very long string";
my $rigth = substr $long,index($long,"l");

# 文字列の入れ替え
my $string = "Hello world";
substr($string,0,5) = "goodbye";

# 正規表現的文字列の入れ替え?
my $string2 = "Hello world";
substr($string2,-20) =~ s/Hello/Goodbye/;


print $mineral."\n";
print $rock."\n";
print $out."\n";
print $rigth."\n";
print $string."\n";
print $string2."\n";