![]() |
|||
| | HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問合せ | ミスティーネット | リンク集 | | |||
|
HOME >> 文字列の扱い
■ 文字列の基本
文字列を扱う際には、基本的に ’(シングルクォーテーション) で文字を囲みます。 文章中に変数をはさみたい場合には、”(ダブルクォーテーション) で文字と変数を囲みます。
$answer = 2 + 3;
上の print 文ではシングルクォーテーションを使って文字と変数を囲んでいる為、変数が文字列とみなされて、そのまま変数名が表示されます。
下の print 文ではダブルクォーテーションを使っている為、変数が展開されてから表示されます。
print '2 + 3 = $answer です。'; ← 「2 + 3 = $answer です」 と表示される print "2 + 3 = $answer です。"; ← 「2 + 3 = 5 です」 と表示される 文字列中に改行を入れたい場合は、「\n」 を使います。 「\n」 を使う場合には ”(ダブルクォーテーションで) 囲んでください。
print 'こんにちわ\n'; ← 「こんにちわ\n」 と表示されて、改行されません。 print "こんにちわ\n"; ← 「こんにちわ」 と表示されて、改行されます。 文字同士をくっつける場合には、「. (ドット)」 を使います。 [文字結合の例]
print "こんにちわ\n" . "さようなら" ; ← 「こんにちわ」 改行 「さようなら」 と表示さます。
上記プログラムは、どちらも同じ表示になります。$text1 = "こんにちわ\n"; $text2 = "さようなら"; print $text1 . $text2; ← 「こんにちわ」 改行 「さようなら」 と表示さます。 1つ目の print 文では、連結した文字列を直接 print 関数へ渡していますが、2つ目の print 文では、 文字を一旦変数にセットしてから、その変数を連結させて表示させています。 ■ 文字列の比較
文字列同士を比較する際には、比較(関係)演算子を使います。 比較演算子は条件処理やループ処理を行なう際によく使われます。
文字列での大きい・小さいは、文字コードで判断されます。数値 < 英数大文字 < 英数小文字 < 全角文字 [比較演算子の使用例]
$animal = '猫'; ← 変数に文字を設定する。
if ( $animal eq '猫' ) { print '$animal は「猫」 です。'; } else { print '$animal は 「猫」 ではありません。'; } ■ 文字列の処理
文字列を扱う際には正規表現という強力な方法がありますが、ここでは比較的簡単に利用できる関数を使った文字の扱いをご紹介いたします。 文字列の長さを求める場合には、 length 関数を使います。 → length 関数リファレンス
$charactor = 'abc';
文字列の長さはバイト数で返されます。全角文字の場合は、1文字につき2の値が返されます。
$len = length $charactor; ← 3 が返される。 文字列から指定した部分を取り出す。 [書式] 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 ← すべて大文字に変換する
$country = 'Japan'; ← 変数をセットする
$text1 = uc $country; ← JAPAN が代入される $text2 = ucfirst $country; ← Japan が代入される $text3 = lc $country; ← japan が代入される $text4 = lcfirst; ← japan が代入される ■ 改行を含む文章の表示
HTMLソースのような改行を含む長い文章の場合には、print 関数での表示はとても大変です。 また、Perl のソース自体も分かりにくいものになってしまいます。 ヒアドキュメントを使うと、表示したい文章をそのまま記述できるためとても便利です。 【書式】 終端文字は半角英数字なら何でもよいのですが、大文字が比較的よく使われます。 【print 関数での表示】
print "Content-Type: text/html\n\n";
print 関数での表示では、文字列をダブルクォーテーションで囲まなければならないほか、改行を 「\n」 で表示しなければなりません。
また、HTMLソース内でダブル-クォーテーションを使用している場合には、Perl で使用するものと区別するために、「\」 でエスケープする必要があります。print "<html>\n"; print "<head>\n"; print "<body bgcolor=\"#ffffff\">\n"; print "TEST HTML\n"; print "</body>\n"; print "</html>\n"; 【ヒアドキュメントでの表示】
print "Content-Type: text/html\n\n";
ヒアドキュメントを使った場合には、HTMLソースをそのまま記述することが出来ます。print <<END_HTML; <html> <head> <body bgcolor="#ffffff"> TEST HTML </body> </html> END_HTML HTMLソース自体も閲覧性が高いため、記述が楽なだけではなく、HTMLソースの検証や変更等も簡単に行なえます。 HTML文書であることをWebサーバーに知らせる「Content-Type」の記述のみ、print 関数で出力しています。 「Content-Type」の記述後には必ず空の改行が必要ですが、print 関数で記述しておくことで、改行の入力忘れを防ぐことが出来ます。 この部分は、あくまで個人の好みですので、ヒアドキュメント内に記述しても構いません。 また、下記のような方法を使うと、ヒアドキュメント内でもプログラムを使用することが出来ます。
print "Content-Type: text/html\n\n";
${ } を使うと、この中のプログラムが実行されます。print <<END_HTML; <html> <head> <body bgcolor="#ffffff"> $ { message() } </body> </html> END_HTML sub message { print "TEST HTML\n"; } ここでは、サブルーチンを使ってメッセージを表示しています。 複数行にわたるプログラムも記述できますが、長いプログラム文になる場合には、 ヒアドキュメントの可視性を損なわないように、サブルーチンを使うのがよいと思います。 サブルーチンについては10章をご覧ください。 >>サブルーチンを使ったプログラム
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||