ミスティーネットPerl・CGI講座 パール・CGIレッスン MISTY-NETレンタルサーバー・PERLプログラミング講座 CGI&PERL究極のレシピ

管理運営:有限会社ミスティーネット

| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問合せ | ミスティーネット | リンク集 |
Perl言語リファレンス

ミスティーネットPerl・CGI講座/基本編
ミスティーネットPerl・CGI講座/基本編
始めに 始めに
変数について 変数について
処理の制御1 処理の制御1
処理の制御2 処理の制御2
配列の処理 配列の処理
ハッシュの処理 ハッシュの処理
数値の扱い 数値の扱い
文字の扱い 文字の扱い
時間の処理 時間の処理
サブルーチン サブルーチン
ファイルの処理 ファイルの処理
ディレクトリの処理 ディレクトリ処理
CGIについて CGIについて
漢字の処理 漢字の処理
    (文字コード)
Cookie の処理 Cookie の処理
正規表現1 正規表現1
正規表現2 正規表現2
演算子について 演算子について
ライブラリ ライブラリ
デバッグ デバック
環境変数について 環境変数
ミスティーネットPerl・CGI講座/基本編

ミスティーネットPerl・CGI講座/応用編
ミスティーネットPerl・CGI講座/応用編
カウンターを作ってみよう カウンターを
     作ってみよう!
ミニゲームを作ってみよう ミニゲームを
     作ってみよう!
ミスティーネットPerl・CGI講座/応用編

ミスティーネットPerl・CGI講座/WEB講座一覧
ミスティーネット
HTML講座 HTML講座
スタイルシート講座 スタイルシート講座
JavaScript講座 JavaScript講座
UNIXコマンド講座 UNIXコマンド講座

ミスティーネット
ラブラブメールでツーショット

人気サイトランキング

人気サイトランキング

8daysランキング

  HOME >> 文字列の扱い
  1. 文字列の基本
  2. 文字列の比較
  3. 文字列の処理
  4. 改行を含む文章の表示
■ 文字列の基本
文字列を扱う際には、基本的に ’(シングルクォーテーション) で文字を囲みます。
文章中に変数をはさみたい場合には、”(ダブルクォーテーション) で文字と変数を囲みます。

$answer = 2 + 3;
print '2 + 3 = $answer です。';      ← 「2 + 3 = $answer です」 と表示される
print "2 + 3 = $answer です。";      ← 「2 + 3 = 5 です」 と表示される
上の print 文ではシングルクォーテーションを使って文字と変数を囲んでいる為、変数が文字列とみなされて、そのまま変数名が表示されます。 下の print 文ではダブルクォーテーションを使っている為、変数が展開されてから表示されます。


文字列中に改行を入れたい場合は、「\n」 を使います。
「\n」 を使う場合には ”(ダブルクォーテーションで) 囲んでください。

print 'こんにちわ\n';      ← 「こんにちわ\n」 と表示されて、改行されません。
print "こんにちわ\n";      ← 「こんにちわ」 と表示されて、改行されます。



文字同士をくっつける場合には、「. (ドット)」 を使います。

[文字結合の例]
print "こんにちわ\n" . "さようなら" ;      ← 「こんにちわ」 改行 「さようなら」 と表示さます。

$text1 = "こんにちわ\n";
$text2 = "さようなら";
print $text1 . $text2;      ← 「こんにちわ」 改行 「さようなら」 と表示さます。
上記プログラムは、どちらも同じ表示になります。
1つ目の print 文では、連結した文字列を直接 print 関数へ渡していますが、2つ目の print 文では、
文字を一旦変数にセットしてから、その変数を連結させて表示させています。





■ 文字列の比較
文字列同士を比較する際には、比較(関係)演算子を使います。
比較演算子は条件処理やループ処理を行なう際によく使われます。

演算子 意味
$a eq $b $a と $b が等しい場合に真を返します。
$a ne $b $a と $b が等しくない場合に真を返します。
$a gt $b $a が $b より大きい数値の場合に真を返します。
$a lt $b $a が $b より小さい数値の場合に真を返します。
$a ge $b $a が $b より大きいか等しいの場合に真を返します。
$a le $b $a が $b より小さいか等しいの場合に真を返します。
(文字同士を比較する際には、数値用の比較演算子を使います。)

文字列での大きい・小さいは、文字コードで判断されます。数値 < 英数大文字 < 英数小文字 < 全角文字


[比較演算子の使用例]
$animal = '猫';      ← 変数に文字を設定する。

if ( $animal eq '猫' ) {
     print '$animal は「猫」 です。';
}
else {
     print '$animal は 「猫」 ではありません。';
}





■ 文字列の処理
文字列を扱う際には正規表現という強力な方法がありますが、ここでは比較的簡単に利用できる関数を使った文字の扱いをご紹介いたします。

文字列の長さを求める場合には、 length 関数を使います。
   → length 関数リファレンス

$charactor = 'abc';
$len = length $charactor;      ← 3 が返される。
文字列の長さはバイト数で返されます。全角文字の場合は、1文字につき2の値が返されます。


文字列から指定した部分を取り出す。
[書式]    substr 対象文字列, オフセット, 参照する長さ
文字列の末尾からオフセット分戻った位置から参照を開始します。
参照する長さがセットされている場合は、開始位置から、長さの分だけ文字列を参照してその値を返します。

$text = "今日はよいお天気です。";
print substr( $text, 12 );      ← 「お天気です。」 と表示されます。



CVS 形式などの決まった記号で区切られている文字は、split 関数を使って要素ごとに分けることが出来ます。
[書式]    split(/区切り文字/, 文字列, 回数)
文字列を区切り文字で分割して、分割された値は配列として返されます。
回数を指定すると、区切る回数を制限することが出来ます。

$cvs = "01,田中太郎,東京,17,A";

@data = split(/,/, $cvs);
print "氏名: $data[1]\n";
print "住所: $data[2]\n";
print "年齢: $data[3]\n";
print "血液型: $data[4]\n";



文字列の中から特定の文字を検索する場合には index 関数を使います。
[書式]    index 文字列, キーワード, (開始位置)
指定した文字列内からキーワードが見つかった場合にはその位置を数値で返します。
キーワードが見つからなかった場合には、-1 を返します。
(開始位置を指定するとその位置からキーワード検索を開始します。)

$text = "文字を検索してね!";    ← 検索対象の文字列をセットします

print index $text, "検索";    ← 6 と表示されます



大文字・小文字の変換を行なうにはいくつか方法がありますが、ここでは下記の4つの関数を使った変換方法をご紹介します。
uc    ← すべて大文字に変換する
ucfirst    ← 始めの1文字のみ大文字に変換する
lc    ← すべて小文字に変換する
lcfirst    ← 始めの1文字のみ小文字に変換する
$country = 'Japan';    ← 変数をセットする

$text1 = uc $country;    ← JAPAN が代入される
$text2 = ucfirst $country;    ← Japan が代入される
$text3 = lc $country;    ← japan が代入される
$text4 = lcfirst;    ← japan が代入される





■ 改行を含む文章の表示
HTMLソースのような改行を含む長い文章の場合には、print 関数での表示はとても大変です。
また、Perl のソース自体も分かりにくいものになってしまいます。
ヒアドキュメントを使うと、表示したい文章をそのまま記述できるためとても便利です。
【書式】
print <<終端文字;    ← 直接表示する場合
・・・    ← この部分に表示したい文字列を記入
終端文字

$message = <<終端文字;    ← 変数に代入する場合
・・・    ← この部分に変数に代入したい文字列を記入
終端文字

終端文字は半角英数字なら何でもよいのですが、大文字が比較的よく使われます。


【print 関数での表示】
print "Content-Type: text/html\n\n";
print "<html>\n";
print "<head>\n";
ミスティーネットPerl・CGI講座 − MISTY-NET − print "</head>\n";
print "<body bgcolor=\"#ffffff\">\n";
print "TEST HTML\n";
print "</body>\n";
print "</html>\n";
print 関数での表示では、文字列をダブルクォーテーションで囲まなければならないほか、改行を 「\n」 で表示しなければなりません。 また、HTMLソース内でダブル-クォーテーションを使用している場合には、Perl で使用するものと区別するために、「\」 でエスケープする必要があります。

【ヒアドキュメントでの表示】
print "Content-Type: text/html\n\n";

print <<END_HTML;
<html>
<head>
ミスティーネットPerl・CGI講座 − MISTY-NET − </head>
<body bgcolor="#ffffff">
TEST HTML
</body>
</html>
END_HTML
ヒアドキュメントを使った場合には、HTMLソースをそのまま記述することが出来ます。
HTMLソース自体も閲覧性が高いため、記述が楽なだけではなく、HTMLソースの検証や変更等も簡単に行なえます。


HTML文書であることをWebサーバーに知らせる「Content-Type」の記述のみ、print 関数で出力しています。
「Content-Type」の記述後には必ず空の改行が必要ですが、print 関数で記述しておくことで、改行の入力忘れを防ぐことが出来ます。
この部分は、あくまで個人の好みですので、ヒアドキュメント内に記述しても構いません。



また、下記のような方法を使うと、ヒアドキュメント内でもプログラムを使用することが出来ます。

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

print <<END_HTML;
<html>
<head>
ミスティーネットPerl・CGI講座 − MISTY-NET − </head>
<body bgcolor="#ffffff">
$ { message() }
</body>
</html>
END_HTML

sub message {
   print "TEST HTML\n";
}
${ } を使うと、この中のプログラムが実行されます。
ここでは、サブルーチンを使ってメッセージを表示しています。
複数行にわたるプログラムも記述できますが、長いプログラム文になる場合には、 ヒアドキュメントの可視性を損なわないように、サブルーチンを使うのがよいと思います。


サブルーチンについては10章をご覧ください。  >>サブルーチンを使ったプログラム



← 前のページへ戻る 次のページへ →


| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問い合わせ | ミスティーネット |
(C)Copyright 2002 ミスティーネット Inc. All Right Reserved.