関数順 インデックス
目的別 インデックス

構文
 
 substr 対象となる変数, 開始位置, 長さ, 置き換え文字列
 substr 対象となる変数, 開始位置, 長さ
 substr 対象となる変数, 開始位置

返り値
 
 部分文字列

説明

  • 対象となる変数から文字列の一部を取得します。
  • 開始位置で,取得する文字列の開始位置を指定します。開始位置は0から数えます。長さで取得する文字列の長さを指定します。省略すると最後まで取得します。
  • 開始位置に負の値を使用すると,末尾から数えます。長さに負の値を使用すると,残す文字列の長さを指定します。
  • substrを左辺に使用することができます。この場合,substrで対象になった文字列を右辺の文字列に置き換えます。substrを左辺に使う代わりに置き換え文字列を指定して文字列を置き換えることもできます。

使用例

変数$strから部分文字列を取得する
#!/usr/bin/perl
use strict;
use warnings;

my $str = 'Enjoy Perl!';

# (0から数えて)1文字目から2文字取得
my $s1 = substr $str, 1, 2;
print $s1, "\n"; # nj

# 3文字目から最後まで取得
my $s2 = substr $str, 3;
print $s2, "\n"; # oy Perl!

# 後ろから3文字取得
my $s3 = substr $str, -3;
print $s3, "\n"; # rl!

# 先頭から後ろ7文字を残して取得
my $s4 = substr $str, 0, -7;
print $s4, "\n"; # Enjo
変数$strの部分文字列を置換する
#!/usr/bin/perl
use strict;
use warnings;

my $str = 'Enjoy Perl!';

# 6文字目から4文字の部分をRubyに置き換える
my $s1 = $str;
substr($s1, 6, 4) = 'Ruby';
print $s1, "\n";

# 5文字目から4文字の部分をPythonに置き換える
my $s2 = $str;
my $s3 = substr $s2, 6, 4, 'Python';
print $s2, "\n"; # Enjoy Python! 
print $s3, "\n"; # Perl