大文字と小文字を区別せずにマッチを行う(「/i」修飾子)

広告

「/i修飾子」を指定すると大文字と小文字を区別せずにマッチを行います。書式は次の通りです。

m/パターン/i

簡単な例で考えてみます。まず「/i」修飾子を使用しない場合です。

/Test/

上記の場合、マッチする文字列とマッチしない文字列は次のようになります。

○ Test
× test
× TEST
× tesT

これに対して「/i」修飾子を指定した場合は次のように記述します。

/Test/i

上記の場合、マッチする文字列とマッチしない文字列は次のようになります。

○ Test
○ test
○ TEST
○ tesT

このように「/i」修飾子を指定した場合には大文字と小文字が区別されずにマッチされます。

サンプルプログラム

では簡単なプログラムで確認して見ます。

test2-1.pl

use strict;
use strict;
use warnings;
use utf8;
binmode STDIN, ':encoding(cp932)';
binmode STDOUT, ':encoding(cp932)';
binmode STDERR, ':encoding(cp932)';

print "パターン「/Test/」に対する結果¥n¥n";

&check1("Test");
&check1("test");
&check1("TEST");

print "¥nパターン「/Test/i」に対する結果¥n¥n";

&check2("Test");
&check2("test");
&check2("TEST");

sub check1{
  my ($str) = @_;

  if ($str =~ /Test/){
    print "○:$str¥n";
  }else{
    print "×:$str¥n";
  }
}

sub check2{
  my ($str) = @_;

  if ($str =~ /Test/i){
    print "○:$str¥n";
  }else{
    print "×:$str¥n";
  }
}

上記を「test2-1.pl」の名前で保存します(文字コードはUTF-8です)。そしてコマンドプロンプトを起動し、プログラムを保存したディレクトリに移動してから次のように実行して下さい。

大文字と小文字を区別せずにマッチを行う(「/i」修飾子)

( Written by Tatsuo Ikura )