プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。
ラクダ本こと「プログラミング言語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はプログラム名という特殊変数になるので。。。)
つまり、本の間違いでしょうか?

A 回答 (1件)

あなたが「使うこともできる」の意味を勘違いしている可能性は考えられます.



「値を代入できる」とは, 一言も書いてないですよね.
    • good
    • 0
この回答へのお礼

あそっか、なるほど、$0、$1、$2・・・$nは、Perlによって予約されている識別子名であって、代入はできないということですね。ううむ。ありがとうございます。

お礼日時:2011/06/12 00:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!