第36回 Perlで小技4

print について

今まで、なにげなしに、printを使ってきたが、
printの挙動について、ちょっと詳しくみてみよう。

配列をそのまま与える

つぎのように、配列をそのまま与えてみる

ソース

use strict;

my @c = ('aaa', 'bbb', 'ccc');
print @c, "\n";

結果

aaabbbccc

Perlの解釈

これは、以下のように@cが展開されている

print 'aaa', 'bbb', 'ccc', "\n";

参考:第10回 今までの知識を総動員して、Data::Dumperを理解する - bingo_nakanishiの他言語出身者のためのPerl入門


配列を"(ダブルクォートで囲う)

では、次のように配列を"(ダブルクォートで囲う)とどうなるだろうか?

ソース

use strict;

my @c = ('aaa', 'bbb', 'ccc');
print "@c", "\n";

結果

aaa bbb ccc

このようにスペース入りで表示することができるので、便利である。

実際問題、これは、printの能力ではなく、
ダブルクォートの能力である。

次のソースで見てみよう

ソース

use strict;

my @c = ('aaa', 'bbb', 'ccc');
my $d = "@c";
print $d, "\n";