[もくじへトップページへ前ページへ次ページへ]

Sunday, 07-Jan-2001 01:22:00 JST に更新

                                     

 6.文字列の操作

 Perlは文字列の扱い・編集が便利です。例を示します。

  • 文字列の変数への代入

    $a = 'test';

    文字列は「'」で囲んで代入します。


  • 文字列の連結

    $a = 'test' . 'study';

    文字列は「.」で連結します。


  • 繰り返し

    $a = 'test';

    $b = $a x 5;

    $bの中身は testtesttesttesttest と$aが5回繰り返されます。


  • 「"」と「'」の違い

    $a = 'Ryokan ';

    $b = 'Tanaka';

    $c = "My name is $a$b";

    $cの中身は My name is Ryokan Tanaka となります。

    「"」で囲むと、文字列の変数は、変数の値に展開されます。

    $c = 'My name is $a$b';

    $cの中身は My name is $a$b となります。

    「'」で囲むと、囲まれたところがそのまま文字列になります。


  • パターンマッチ(m演算子)

    m/abc/;

    特殊変数「$_」の中に'abc'が含まれていれば真を、含まれていなければ

    偽を返します。「$_」以外の変数、例えば$aについてパターンマッチを行

    う場合は、

    $a =~ m/abc/;

    のように「=~」演算子を用います。区切り子「/」はそれ以外でも構いま

    せんが、「/」を用いた場合は「m」を省くことができます。

    if ( $a =~ /abc/ ) {
      print "abcが含まれています。";
    }

    のように使います。


  • パターンの置換1(s演算子)

    $a =~s/abc/ABC/g;

    $aの'abc'をすべて'ABC'に置換します。このように、後にオプションgを

    つけると、すべて置換されます。

    オプションはgの他に、

     i 英字の小文字と大文字の区別をしない。

     e 新文字列を式と見なす。

     o 変数展開を1回だけ行う。

    などがあります。(これらについては、後で説明します。)

    もうひとつ、

    $a =~s/[a-z]/X/g;

    小文字のaからzのどれか一文字にマッチしたら、Xに変換します。


  • パターンの置換2(tr関数)

    パターンの置換1を利用して、小文字を大文字に置換しようとすると、次の

    ようになります。

    $a = 'tanaka';

    $a =~s/[a-z]/[A-Z]/g;

    $aの中身は [A-Z][A-Z][A-Z][A-Z][A-Z][A-Z] となります。

    そこで、このような場合は、「tr」を使います。

    $a =~tr/a-z/A-Z/;

    「s」と違い、「tr」は文字リストの中の各文字を、置換文字リストの対応

    する位置の文字に置換します。

    また、「tr」は置換した文字の個数を戻り値として返します。これを利用

    して、文字の個数を調べることもできます。

    「tr」の例をもう少し、

    $a =~tr/+/ /;

    文字+をすべて空白に置き換えます。

    $a =~tr/a-z/ABCDE/d;

    a〜eの文字をA〜Eに置き換え、他の文字は削除します。

    「tr」のオプションは、

    $a = ~tr/旧リスト/新リスト/オプション の場合、

     c 旧リストに含まれない文字を新リストに置き換える。

     d 旧リストに含まれない文字をすべて削除する。

     s 置き換えた結果、同じ文字が連続するときは1文字にする。

    などがあります。


 など、など・・・文字列の操作法については、他にも多くのやり方や表記法

 があります。ここで説明できなかったものについては、これから先の講義で

 そのつど説明します。

 以上の説明を、ひとつのプログラムにまとめます。



 文字列操作のプログラム

#!/usr/local/bin/perl

print "Content-type: text/html\n\n";

print "<HTML>\n";
print "<TITLE>文字列の操作</TITLE>\n";
print "<BODY>\n";
#
$a = 'test';
print "a=$a<BR>\n";
#
$a = 'test' . 'study';
print "a=$a<BR>\n";
#
$a = 'test';
$b = $a x 5;
print "b=$b<BR>\n";
#
$a = 'Ryokan ';
$b = 'Tanaka';
$c = "My name is $a$b";
print "c=$c<BR>\n";
$c = 'My name is $a$b';
print "c=$c<BR>\n";
#
# 置換1
#
$a ="abctanakabcdac";
$a =~s/abc/ABC/g;
print "a=$a<BR>\n";

#
$a = "ab1ACnopTaNaKa";
$a =~s/[a-z]/X/g;
print "a=$a<BR>\n";
#
#
# 置換2
#
$a = "tanaka";
$a =~s/[a-z]/[A-Z]/g;
print "a=$a<BR>\n";
#
$a = "tanaka";
$a =~tr/a-z/A-Z/;
print "a=$a<BR>\n";
#
$a = "abc+cde+fgh+ijk";
$a =~tr/+/ /;
print "a=$a<BR>\n";
#
$a = "tanakawagenbcazxdxv";
$a =~tr/a-z/ABCDE/d;
print "a=$a<BR>\n";
#
print "</BODY>\n";
print "</HTML>\n";



 このプログラムに適当な名前をつけて、テキストモードでアップロードします。

 パーミッションは755に設定してください。



  テスト実行

      moji.cgi

 をクリックしてください。



  動かないときは、
サポート掲示板へどうぞ。

[もくじへトップページへ前ページへ次ページへ]