Perlの文字列操作

文字列の連結

・文字列.文字列
・変数 .= 文字列;

エスケープシーケンス

\t      # タブ文字(\x09)
\n      # 改行(\x0a)
\r      # リターン(\x0d)
\f      # フォームフィード(\x0c)
\b      # バックスペース(\x08)
\a      # アラーム(\x07)
\e      # エスケープ文字(\x1b)
\033    # 文字コード(8進数)
\x1b    # 文字コード(16進数)
\c[     # コントロール文字
\l      # 次の1文字を小文字にする
\u      # 次の1文字を大文字にする
\L      # \Eまでの文字列を小文字にする
\U      # \Eまでの文字列を大文字にする
\E      # \Lや\Uを終了させます
\" など # ダブルクォーテーション(")自身を表わす

出力

・print ""; エスケープシーケンスが有効、変数を展開する
・print ''; エスケープシーケンスが無効、変数は展開しない
・printf("");
・printf("%d",変数);

・ヒアドキュメント

print << 'AAA'

AAA

文字列の長さを求める

length("文字列");

文字列の比較

・eq 一致
・ne 不一致

文字化け対応

・\表
・use encoding 'sjis';

文字列の置換

変数 =~ tr/旧文字列/新文字列/(オプション);

オプション
・c 旧文字列に含まれない文字を新文字列に置換する
・d 旧文字列に含まれない文字をすべて削除する
・s 置換の結果、同じ文字が続いた場合は1文字にまとめる

文字列の置換(パターンマッチ)

$text =~ s/変換前/変換後/g;

末尾の改行文字を削除

chomp($text);

バイナリ値への変換

pack("C",文字列);

文字コード変換

use Jcode;

&Jcode::convert(\$text,'sjis','utf8');  #UTF-8からシフトJISへ変換
&jcode::convert(\$text2,'euc','sjis');  #シフトJISからEUCへ変換

&Jcode::convert(\$array[$_],'sjis','utf8');  #配列の要素を一括置換

&Jcode::convert( \$text, 'cp932', 'utf8' ); //シフトJISに変換するとき「~」が化けないようにする