Perlの謎(その9):Perlでの文字列
VB系とかDOSコマンド系での文字列はダブルクォーテーションです。
また、SQL系での文字列は、シングルクォーテーションです。
Perlでの文字列は、上記両方です。
違いは、ダブルクォーテーションでは変数が展開され、シングルクォーテーションでは展開されません。
また、qクォート演算子とqqクォート演算子も同じ関係で文字列を表します。
my $strdata1 = '文字列1'; my $strdata2 = "文字列2 $strdata1"; my $strdata3 = q{文字列3}; my $strdata4 = qq{文字列4 $strdata3}; print $strdata1, "\n"; # 文字列1 print $strdata2, "\n"; # 文字列2 文字列1 print $strdata3, "\n"; # 文字列3 print $strdata4, "\n"; # 文字列4 文字列3
あと、qwクォート演算子を使うと文字列のリストの入力が楽になりますね。
my @strlist1 = ('文字列1', '文字列2', '文字列3'); my @strlist2 = qw{文字列1 文字列2 文字列3}; # 上と等価(ただし、スペースが文字列中にあるときはNG) print "@strlist1", "\n"; # 文字列1 文字列2 文字列3 print "@strlist2", "\n"; # 文字列1 文字列2 文字列3
◆補足1:ダブルクォート文字列での特殊文字のエスケープ
たとえば、ダブルクォート文字列にダブルクォートを記述する場合は、その前に \ を置いてエスケープします。
- \" ダブルクォーテーション( " )のエスケープ
- \$ ダラー( $ )のエスケープ
- \\ エスケープのエスケープ
- \@ アットマーク( @ )のエスケープ
- \% パーセント( % )のエスケープ
- \; セミコロン( ; )のエスケープ
尚、シングルクォート文字列の中でのシングルクォート( ' )のエスケープは( \' )とします。
◆補足2:ダブルクォート文字列で展開される \ による文字エスケープ
以下は、ダブルクォート文字列の中で各々の意味(制御コード)に展開されます。
- \t タブ
- \n 改行
- \r リターン
- \f 改ページ
- \b バックスペース
- \a アラーム
- \e エスケープ
- \003 8進数
- \x1b 16進数
- \cC CTRL-C
- \l 次の文字を小文字
- \u 次の文字を大文字
- \L \E が来るまで小文字
- \U \E が来るまで大文字
- \Q \E が来るまで非英数字の前に \ を追加
- \E \L、\U、\Qの効果を終了する