※ ChatGPTを利用し、要約された質問です(原文:Perl: 数字だけの変数名について)
Perlの数字変数名について
このQ&Aのポイント
Perlで数字だけの変数名を利用する場合のルールについて調べました。
ラクダ本こと「プログラミング言語Perl」によれば、数字で始まり数字のみで構成される名前を利用できると書かれています。
しかし、実際に試した結果、数字で始まる変数名はエラーが発生したため、本に誤りがある可能性があると考えられます。
お世話になります。
ラクダ本こと「プログラミング言語Perl」には「2.5 名前」という項目に「厳密な話をすれば、ファニー文字の後ろに続く名前は、識別子でなくても構わない。数字で始まり、数字のみで構成される名前-たとえば$123-を使うこともできる」と書かれています。
しかし、実際に、
$123 = sqrt(5);
print "5の平方根は", $123, "です\n";
というプログラムを実行すると、
Modification of a read-only value attempted at foo.pl at line 1
というエラーメッセージが出て終了します。
これは、$123というのが、正規表現でカッコによるサブパターンを取得した、123番目のサブパターンにマッチするからだと思います。
ちなみにこれを、
$012 = sqrt(5);
print "5の平方根は", $012, "です\n";
と変えるとちゃんと動作します。
ということで、数字の変数名を付ける場合は、
・$0で始まる2桁以上
・すべて数字
という規則である、と考えていいのでしょうか。
($0はプログラム名という特殊変数になるので。。。)
つまり、本の間違いでしょうか?
お礼
あそっか、なるほど、$0、$1、$2・・・$nは、Perlによって予約されている識別子名であって、代入はできないということですね。ううむ。ありがとうございます。