[もくじへ|トップページへ|前ページへ|次ページへ]
に更新
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
をクリックしてください。
動かないときは、サポート掲示板へどうぞ。

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