• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Perl: 数字だけの変数名について)

Perlの数字変数名について

このQ&Aのポイント
  • Perlで数字だけの変数名を利用する場合のルールについて調べました。
  • ラクダ本こと「プログラミング言語Perl」によれば、数字で始まり数字のみで構成される名前を利用できると書かれています。
  • しかし、実際に試した結果、数字で始まる変数名はエラーが発生したため、本に誤りがある可能性があると考えられます。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

あなたが「使うこともできる」の意味を勘違いしている可能性は考えられます. 「値を代入できる」とは, 一言も書いてないですよね.

TYWalker
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • グローバル変数

    perlで。。。下のように実行ファイル間で変数の値が取得できないのでしょうか?できないのでが正しいのでしょうか? ファイル名:1.pl $test=1; sleep(5); $test=2; sleep(5); $test=3; sleep(5); ファイル名:2.pl print "$test\n"; sleep(1); print "$test\n"; sleep(1); print "$test\n"; sleep(1); print "$test\n"; sleep(1); print "$test\n"; sleep(1); print "$test\n"; sleep(1);

  • Perlのキャプチャ

    プログラム #!/usr/bin/perl my $str = "abc,def,ghi"; ($a,$b,$c) = $str =~ /(.*),(.*),(.*)/; print $a,"\n"; print $b,"\n"; print $c,"\n"; 実行結果 abc def ghi このようなプログラムで ($a,$b,$c) = $str =~ /(.*),(.*),(.*)/;は それぞれ$a,$b,$cにabc,def,ghiが入ります. キャプチャしたすべてを変数に入れるならこの方法ですが, defだけが欲しいのに変数を3つ用意する必要がないと思います. 間違った表記ですが, ($b) = $str =~ /(.*),(.*),(.*)/$2/; 2つ目にキャプチャした$2が変数$bに入るような表記は出来ないのでしょうか?

  • プログラミングCについて

    次のプログラムは11の正の平方根の近似値を、以下の方法に基づいて小数点以下第4位の精度で求めるプログラムである。このプログラムが正しく動作するように下線部を埋め、プログラムを完成させなさい。なお、3の2乗は9であり、4の2乗は16なので、10の平方根は3と4の間であることはわかっているとしてよい。(小数点以下第4位の精度とは、小数点以下第4位までが真値ち一致するようにし、第5位以下については一致しなくてもよい事を意味する。よって、結果の表示自身に第5位以下が表示されても構わない。) double x; for(x=3;x<4;x+=0.0001) { for(_______) break; } printf("11の正の平方根は%______です。\n",x); 平方根を求める方法: 変数を3から4まで0.0001刻みで増やしながら、その2乗を計算していきます。最初は3なので、その2乗は9となり、11よりも小さい値になりますが、変数の増加に応じて2乗の値も増えていき、4の2乗になる前には11を越えます。この時の変数が11の平方根の近似値になります。 注意: このプログラムによる答えは3.3167となります。実際には、変数の2乗が初めて11を越えたときの変数の値よりも、その1ステップ前の変数の値が方が近似値として適切かもしれません。しかし、今回はそこまで考慮する必要はありません。

  • PHPでFORMから来る変数名を変数にするには

    PHPでFORMから来る変数名を変数にするにはどうしたらよろしいでしょうか? 可変変数など調べたのですが、値を変数にすることは出来ても変数名を変数にする事は難しいようです。 <form action="reg.php"> <input type = "text" name = "comment"> <input type = "submit"> </form> このform内のnameが動的に変わるプログラムで,reg.phpにおいて名前(今ならcomment)を変数に格納したいと思っています。 reg.php 本来なら $comment = _REQUEST['comment']; とすると思うのですが、commentが動的に変動する場合、_REQUEST内をどう書き換えれば良いかが分からず困っています $dynamic_name = _REQUEST['ここをどう書けばよいでしょうか'] このことを考えてから今はform内ですが、formでなくてもどうやって書いてよいか分からず疑問に思いました 例えば $test = 'abc'; としたとき $test_name にtestという文字列を入れたい場合(つまりabcの変数名)どうやって入れたらよいのでしょうか?(もちろんtestと言う名前は動的に変わります) 詳しい方いらっしゃいましたらご回答いただければと思います。 良いアドバイスございましたら教えてください よろしくお願いします

    • 締切済み
    • PHP
  • Perlで use strict して our変数

    Perl 初心者です。初めて質問します。 test_sub.pl で宣言した変数を test_main.pl から参照したくて悩んでいます。 環境 : WindowsXP / ActivePerl 5.14.2 -------------------- * test_sub.pl -------------------- #!/usr/bin/perl use strict; our $hoge = 'HOGE'; 1; -------------------- * test_main.pl -------------------- #!/usr/bin/perl use strict; require 'test_sub.pl'; print "Content-type: text/html\n\n"; print $hoge; -------------------- これを実行すると、 Global symbol "$hoge" requires explicit package name at C:/public_html/cgi-bin/test_main.pl line 7.\r というエラーが出ます。 require する前に、test_main.pl のほうで our($hoge); と宣言したり 参照する際に print $main::hoge; とパッケージを指定したりすればいけるのですが、 これらをしないとできないものなのでしょうか。 use strict; を書かなければ最初のソースでも動くのですが use strict は書きたい… 継承のようなことをしたいのです。 ちなみに以下試してみたソースです。 -------------------- * test_main.pl -------------------- #!/usr/bin/perl ######################################## # NG use strict; require 'test_sub.pl'; print "Content-type: text/html\n\n"; print $hoge; ######################################## # OK our変数を宣言しておくといける =pod use strict; our ($hoge); require 'test_sub.pl'; print "Content-type: text/html\n\n"; print $hoge; =cut ######################################## # OK 参照する際にパッケージ名を指定すればいける =pod use strict; require 'test_sub.pl'; print "Content-type: text/html\n\n"; print $main::hoge; =cut ######################################## ######################################## # NG =pod use strict; use base qw(test_sub); print "Content-type: text/html\n\n"; print $hoge; =cut ######################################## -------------------- * test_sub.pm -------------------- #!/usr/bin/perl package test_sub; use strict; our $hoge = 'HOGE'; 1; -------------------- NG パタンはどちらも Global symbol "$hoge" requires explicit package name のエラーとなります。 もしご存じの方がいらっしゃいましたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 確率変数の平均と分散

    平均μ、分散σ^2の確率変数Xについて、その平方根SQRT(X)の平均と分散を求めるにはどうすればよいでしょうか。求め方も含めて教えてください。(確率変数の和,差,積,商の平均,分散についてはWEB上に多くの資料があるのですが、平方根については見つけることができませんでした)よろしくお願いします。 ohkawaさん、ozuさん、コメントを有難うございました。 E[x^0.5]=E[((x-μ)+μ)^0.5]=E[μ^0.5(1+(x-μ)/μ)^0.5]とおき、(1+(x-μ)/μ)^0.5を二項展開し、(x-μ)^3/μ^3以上の高次の項を微小量として無視して展開すると次のようになりました。 E[x^0.5]=μ^0.5-σ^2/8/μ^1.5 これを使って分散は次のようになりました。 V[x^0.5]=σ^2/4/μ+3σ^4/64/μ^3 エクセルの乱数で確認すると近似値としてはいい線いっているようです。 平均,分散の右辺第二項を無視するとohkawaさんの答えに一致します。 分散の結果が間違っていました。 V[x^0.5]=σ^2/4/μ-σ^4/64/μ^3 です。

  • pythonで桁の大きな数字を調べる方法

    pythonですが、簡単なプログラムで計算しても10000!とかが計算できてしまいます。コンピュータで使える数字の桁数って限定されると思っていたのですが、pythonだと計算できるのでしょうか。 なお、ちゃんと計算できているのかどうか不明ではありますが。 また、ものすごく桁数が長い数字とか無理数とかですが、数字(0-9)が表れる頻度を調べることができないかと思いますが、プログラムを組むことは可能でしょうか。円周率でも平方根、ネイピア数とかでもですが。かなりイーブンになるものでしょうか。10000!とかだと原理的に0が多くなるようですが。 よろしくお願いします。

  • Perl あっていますでしょうか?

    " " と ' ' の相違は? ""の内にある変数名は、その値に変換されます。 ''の内にあるものは、そのまま文字列として扱われます。 エスケープシーケンスは "" の内に記述した場合のみです。 $a="Hello"; 文字列Helloを変数$aに代入する。 $b="$a"; 変数$aを変数$bに代入する。 $c='$a'; $aという文字列を変数$cに代入する。 ""の内で""を使うことは出来ません。 ''の内で''も使うことは出来ません。 使うときはエスケープシーケンスを使います。 print "\"Hello\"\n"; 文字列"Hello"を表示させます。 print "'Hello'"; 'Hello'を表示させます。 ""の内で''又は''の内で""を使うことは出来ます。 $a="あいうえお"; 文字列 あいうえお を変数$aに代入する。 print "\n$a\n"; 改行して あいうえお表示して 改行する。 print '\n$a'; 文字列\n$aを表示する。 文字列の結合 . (ピリオド)を使って前後の文字列を連結することが可能です。 $a="Hello"." "."World"; 変数$aに文字列Helloと半角スペースとWorldをつないだものを代入します。 $a="c"x3; 変数$aに文字cを3回つないだものを代入します。 $a="A"; 文字Aを変数$aに代入する。 $b="B"; 文字Bを変数$bに代入する。 $c="C"; 文字Cを変数$cに代入する。 print $a.$bx3.$c; 文字Aと文字Bを3回結合したものと文字Cを表示する。 画面にはabbbcと表示されます。

    • ベストアンサー
    • Perl
  • 変数名(配列)の中の変数

    配列変数の名前の中に変数を入れたい場合、どのように記述すればいいのでしょうか? use strictを用いて、以下のように書いてみましたが、エラーが出て上手く動きません。 ループ x: 1-3 ループ y: 1-2 ${"answer$x"[$y]}=入力値 ←この部分を教えてください。    ループ閉 y ループ閉 x --------------------     answer1[1] answer1[2] answer2[1] answer2[2] answer3[1] answer3[2] とループを通るように、変数名を設定したいのですが、 エラーが出て実行ができません。 エラー:Can't use string ("answer1") as an ARRAY ref while "strict refs" in use at~ -------------------- 実際のプログラムは以下のように書いています。(該当部分のみ) for(my $x=1; $x<$num; $x++) { for (my $y=0; $y<$n; $y++) { my $y = ($x*$n)+$d; my @line = split(/\r/, $data[$y]); my @line0 = split(/\t/, $line[0]); ${"answer$x"[$y]} = $line0[0]; } } よろしくお願いします。

  • 名前に変数を入れたい

    print "$in{'name_1'}"; print "$in{'name_2'}"; print "$in{'name_3'}"; 上記の名前の部分に変数を入れて下記のようにしたいのですが、方法がわかりません。 for(1..3) { $i++; print "$in{'name_$i'}"; } また、フォームから送信されてくる名前=$in{'name'} の読み名がわからないのですが、これは変数とは違いますか?どのように呼ぶものなのでしょうか? 説明下手で申し訳ないのですが、宜しくお願いいたします。

    • ベストアンサー
    • Perl