読者です 読者をやめる 読者になる 読者になる

Learn to Live and Live to Learn

IT(たまにビジネス)に関する記事を読んで、考えて、使ってみたことをまとめる場。

変数名を明示的に書く方法

変数名は、意味をなす限り、できるだけ長くなるように解釈されます。
(初めてのPerl P40)

Perlでは、変数名に英数字またはアンスコを続けると
それも変数名だと解釈されます。

#!/usr/bin/perl
use strict;
use warnings;
my $what = "brontosaurus steak";
my $n = 3;
print "fred ate $n $whats.\n";
# -> Global symbol "$whats" requires explicit package name at var.pl line 6.
#    Execution of var.pl aborted due to compilation errors.

この場合はまだエラーが出るのでおかしいことに気付けますが

my $whats = "fred";
print "fred ate $n $whats.\n";
# -> fred ate 3 fred.

その変数=$whatsも存在した日には
出力結果はまったくの別物です。
解決策としては

print "fred ate $n ${what}s.\n";
# -> fred ate 3 brontosaurus steaks.

{}を使えばここが変数名ですよーとPerlに伝えることができます。
すべての変数に{}を付けるわけにはいきませんが
役立つときはありそうです。