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

Perlの数字変数名について

Tacosanの回答

  • ベストアンサー
  • 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ステップ前の変数の値が方が近似値として適切かもしれません。しかし、今回はそこまで考慮する必要はありません。

  • 確率変数の平均と分散

    平均μ、分散σ^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
  • 名前に変数を入れたい

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

    • ベストアンサー
    • Perl
  • 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
  • perlの制御文について

    汚くて申し訳ありません。 以下のようなperlのプログラムを組んだのですが制御文が思い通りに動きません。 比較対象の数字の先頭の0を取れば正常に動くのですがどうしても0をはずすことはできないのです。 いろいろ試してみたのですがどうしてもうまきかないので知恵を貸してください。 $input = <STDIN>; if($input > 0130){ print "A\n"; } elsif(($input > 0120)&&($input < 0130)){ print "B\n"; } else{ print "C\n"; }

  • 入力した任意の数の平方根を求める

    C言語を少しずつですが勉強していて、最小値から最小値までの和を求めるのと、入力した数の2乗を求めるプログラムはわりと楽に完成したのですが、平方根を求めるというのができずに困っています。 プログラムの流れを説明すると、 1.どの処理を行うのか、数字+Enterで選択(平方根は、case 3です) 2.その処理を行う 3.結果の出力 です。 平方根の処理は、 scanfで実数を変数に代入→計算を行う関数を実行→結果を出力です。 症状としては、例えば4と入力して処理を実行すると、桁数のすごく大きい数が入力した数として処理され、また平方根も正しく求められていないようです。 (コンパイル時にエラーは出ていません)