変数と文字列を続けて書く場合、変数を明示的に分けるTips | to be continued ~とあるプログラマーの実験的開発日誌~

to be continued ~とあるプログラマーの実験的開発日誌~

WEBデザイナー兼プログラマーである管理人が日々のトラブル解決に向けて奮闘する開発日誌。

今回は知っている人にとっては当たり前すぎることでも、

知らない人にとっては意外と盲点という話。


たとえば日数を「○日」といったように表したい場合、

○の部分を変数にして記述すると、


$day = '10';
print "$day日\n";


という感じで表示できる。


ところが、これを「○day」のように英語で表そうとすると、


$day = '10';
print "$dayday\n";


としても当然、表示されない。

なぜなら、変数と文字列を続けて書いたため、

$daydayという一つの変数として扱われてしまうからだ。


もちろん、連結子の「.」(ピリオド)を使って

print $day."day"."\n";

というようにしても良いのだけれど、

これ自体の結果を別の文字列と組み合わせたり、他の変数に入れたりすしようとすると、

ややこしくなってくる。


そこで変数を明示的に表す方法が役に立つのだが、

変数の部分を{}で囲ってやれば良い。

上記の例の場合、


$day = '10';
print "${day}day\n";


とすれば万事解決。


まあ、わかっている人にとっては何をいまさら的な話なのだろうが、

それだけに調べてみると意外と見つけられなかったので記録しておく。