第20回 シングルクォートとダブルクォート
今まで、なにげなしに、文字列を使ったプログラムを見てきましたが、
文字列の作成の仕方をもっと詳しく見ていきましょう。
文字列を作成する2つの方法
my $c = 'こんにちは'; my $d = "こんばんは";
このように、文字列を、
シングルクォートとダブルクォートで囲う 2つの方法が存在する。
違いはなにか?
シングルクォート
シングルクォートで囲まれた内容はそのまま使われる
例1:
print 'こんにちは\n';
結果:
こんにちは\n
例2:
use strict; my $c = 'こんにちは'; print '$c\n';
結果:
$c\n
これでは、 変数の中身を表示させたり、改行を出力することができない......
そこで、ダブルクォート!
ダブルクォート
ダブルクォートで囲まれた内容は展開されて使われる
例1:
print "こんにちは\n";
結果:
こんにちは
例2:
use strict; my $c = "こんにちは"; print "$c\n";
結果:
こんにちは
ちがいはわかったけど....
ちがいはわかったけど、
シングルクォートで囲った場合は、中にシングルクォート入れたら 大変な文法エラーに!!
ダブルクォートで囲った場合は、中にダブルクォート入れたら 大変な文法エラーに!!
ということにならないだろうか!?
例1:
use strict; my $c = 'bingo's page';
Substitution pattern not terminated at bingo.pl line 3.
例2:
use strict; my $c = "bingo "s" page";
Substitution replacement not terminated at bingo.pl line 3.
もちろん エラーです。
じゃあ次のようにしたらどうだろう?
use strict; my $c = "bingo 's page";
bingo.pl syntax OK
おお、 いけた!!
しかし、何も展開しないのに ダブルクォートで囲うのはなんかみっともない。
しかも、ダブルクォートで囲む場合の箇所でダブルクォートをシングルクォートにしてしまったら、展開が行われなくなってしまう....
これは困った....
ということで、
q
と
が存在します。
q と qq に関しては次回
書き方を、構造化(みだしなど付けて頑張った)して書いてみたので、
とても 疲れてしまった、 q と qq に関しては次回やります。
それでは また〜
(※ シングルクォートとダブルクォートの話が終わり次第、前のラフな感じの書き方に戻す予定 (あくまでも予定だが))