第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

qq

が存在します。

q と qq に関しては次回

書き方を、構造化(みだしなど付けて頑張った)して書いてみたので、
とても 疲れてしまった、 q と qq に関しては次回やります。

それでは また〜

(※ シングルクォートとダブルクォートの話が終わり次第、前のラフな感じの書き方に戻す予定 (あくまでも予定だが))