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

構文
 
 s/PATTERN/REPLACEMENT/オプション

説明

  • マッチ・パターン(PATTERN)を使って文字列検索を行い,REPLACEMENTに置換します。マッチ・パターンは正規表現で指定します。
  • オプションを指定することで,文字列検索の際の動作を変更できます。例えば,大文字/小文字を区別しないようにできます。
  • 置換対象 =~ s/PATTERN/REPLACEMENT/オプション の形で使います。
  • 文字の繰り返し数を指定することができます。指定は()のように行います。

    {m,n} m回以上n回以下
    {m,} m回以上
    {m} m回
    * 0回以上({0,}と同じ)
    + 1回以上({1,}と同じ)
    ? 0回または1回({0,1}と同じ)

使用例

変数$cmdの中の/usr/binを/usr/loca/binに置換する
#!/usr/bin/perl
use strict;
use warnings;

my $cmd = '/usr/bin/perl';

$cmd =~ s|/usr/bin|/usr/local/bin|;

print $cmd, "\n";
変数$filenameの中の拡張子.txtを.bakに置換する
#!/usr/bin/perl
use strict;
use warnings;

my $filename = 'document.txt';

$filename =~ s/\.txt$/.bak/;

print $filename, "\n";
※「^」で行頭に$で行末にマッチさせることができます。

配列@itemsの中のZoom, Zooom, Zoooom, ZooooomをZoomに置換する
#!/usr/bin/perl
use strict;
use warnings;

my @items = qw(
  Zom
  Zoom
  Zooom
  Zoooom
  Zooooom
);

foreach (@items) {
  my $item = $_;

  $item =~ s/Zo{2,}m/Zoom/; 
# Zの次にoが二つ以上あってmがあったらZoomに置換する

  print $item, "\n";
}
変数$itemの中の=の前後を入れ替える
#!/usr/bin/perl
use strict;
use warnings;

my $item = 'aaa=bbb';

$item =~ s/^(.*)=(.*)$/$2=$1/; # $1=aaa $2=bbb

print $item, "\n"; # bbb=aaa
※カッコを付けるとカッコ内でマッチした内容を取得することができます。 カッコの左側から$1,$2,……,という変数にマッチした内容が格納されます。

変数$itemの中の数字部分を(?)にする
#!/usr/bin/perl
use strict;
use warnings;

my $item = 'aaa=111,bbb=222';

$item =~ s/\d+/(?)/g;

print $item, "\n"; # aaa=(?),bbb=(?)
※マッチする部分をすべてを対象とする場合には,gオプションを使います。 gオプションを使うとすべての部分をマッチさせることができます。

配列@filesの要素を表示する。表示する際.txt(大文字/小文字無視)で終わるデータの拡張子を.bakに変更してから表示する
#!/usr/bin/perl
use strict;
use warnings;

my @files = qw(
  data.pdf
  README.TXT
  img2.png
  sample.txt
  index.html
  DEFAULT.HTM
);

foreach (@files) {
  my $file = $_;
  
  $file =~ s/\.txt$/.bak/i;
  
  print $file, "\n";
}
※iオプションを使うと大文字/小文字を区別しないようになります。

変数$strの中の連続するタブ文字を一つのタブ文字にする
#!/usr/bin/perl
use strict;
use warnings;

my $str = "aaa\tbbb\t\tccc\t\t\tddd";
$str =~ s/\t+/\t/g;

print $str, "\n";
※正規表現についてはその他いろいろな書き方があります。 正規表現について詳しくはperldocコマンド(perldoc perlre)で説明を読むことができます。 ※オプションについてはperldocコマンド(perldoc perlop)で一覧を見ることができます。