perlで変数の中身を変数とみなす方法とは?

このQ&Aのポイント
  • perlで変数の中身を変数とみなし、その中身を知る方法はありますか?テキストファイル上に書かれている変数の中身を取得したい場合、連想配列を使用することもできますが、スタティック変数を使いたい場合にはどうすれば良いのでしょうか?
  • perlで変数の中身を変数とみなす方法について教えてください。例えば、$abcという変数を$xyzの中身として扱い、その中身を取得したい場合、どのようにすれば良いのでしょうか?スタティック変数を使用する方法があるかどうかも教えてください。
  • perlで変数の中身を変数として扱い、その中身を取得する方法について教えてください。テキストファイル上に書かれている変数の中身を取得したい場合、どのようにすれば良いのでしょうか?連想配列を使用する方法もありますが、スタティック変数を使いたい場合にはどうすれば良いのか知りたいです。
回答を見る
  • ベストアンサー

perlで変数の中身を変数とみなす方法ってありますか?

perlで、変数の中身を変数とみなし、その中身を知る方法ってありますか? 具体的に言うと、 $abc = "$xyz"; $xyz = "test"; なる状況だったとして、$abc から "test" という文字列にたどりつく 方法ってあるのでしょうか? 何をしたいのかというと、テキストファイル上に "$xyz" と書かれてたと します。そのテキストファイルを perl で解読したとき、その時点での 実行中の $xyz に何が入っているかを得たいのです。 もちろん、連想配列を使えば似たようなことができるのは知っていますが、 性質上、できればスタティック変数を使いたいのです。 そのような方法は、perl には用意されているのでしょうか?

  • posha
  • お礼率75% (9/12)
  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • alfeim
  • ベストアンサー率58% (114/195)
回答No.1

動的に式を評価する命令であるeval()を使えば、ご要望の機能は実現できると思いますよ

posha
質問者

お礼

すごい! あったんですね。 ためしに、 $abc = '$xyz' $xyz = "test\n" print eval ($abc); とやったら、みごとに test と表示されました。 ほんとうに助かりました。ありがとうございます。

関連するQ&A

  • perlでの比較について

    perlでの比較について Perlで以下のことをしたいと考えております。 ”文字列全一覧”の中に文字列が数千個ほど並んでいます。 文字列が数百個かいてあるテキストファイルが数百個ほどあります。 その文字列のテキストファイルに書かれている文字列全てが”文字列全一覧”の中にある文字列と 完全一致しているか、完全不一致している、部分一致しているか仕分けたいです。 【文字列全一覧】 ABC XYZ AAA ccc DADA ABCDEFG 【文字列ファイル1】 AAA bbbb xyz SSSSSS 【文字列ファイル2】 AAA ccc DADA 【文字列ファイル3】 ABCDGHJ XYZ AAA ABC 【文字列ファイル4】 ZZZZZZ llllll 5678901 KIKIKIKI 【文字列ファイル・・・】 ・・・・・ ・・・・・ このような感じでファイルがあります。(ちなみに上記の場合、”文字列ファイル2”が完全一致で”文字列ファイル4”が完全不一致、”文字列ファイル1”と”文字列ファイル3”が部分一致になります。) どなたか教えていただけないでしょうか(涙)

    • ベストアンサー
    • Perl
  • Perl 戻り値の型の判定って出来ますか?

    Perlは引数でのOUTを返せないと認識してます。 ※ここで間違っていたらご指摘下さい。 そのために下記のように、違った型(スカラー変数または配列)を返すように切り替えた場合に呼び側はどのように判定すれば良いのでしょうか?教えて下さい。 $result = sample(); sub sample{ $abc = "abc"; @xyz = qw(x y z); if(){ return $abc; } if(){ return @xyz; } return 0; }

    • ベストアンサー
    • Perl
  • Perlでのテキスト処理について

    Perlでのテキスト処理について質問です。 テキストファイルの中身が下記のようになっています。 【テキスト編集前】 --------------------------------------- test ,abc ,AB ,VI ,SS ,ma ---1行目 test ,abc ,AC ,PI ,VS ,ma ---2行目 test ,abc ,BA ,SS ,VS ,ma ---3行目 test ,abc ,BA ,VI ,VS ,ma ---4行目 test ,cde ,AA ,VI ,SS ,mb ---5行目 test ,cde ,CC ,PE ,VS ,mb ---6行目 test ,cde ,BC ,PI ,SS ,mb ---7行目 test ,cde ,AC ,PI ,SS ,mc ---8行目 --------------------------------------- 2列目(abc/cde)と6列目(ma/mb/mc)が同じ行に対しては 1行にまとめて出力したいと思っています。 この時、1列目、4列目、5列目はマージした形にし (同一文字は一度だけ出力、同一でない文字は/区切りで出力)、 2列目、6列目は同一文字をそのまま出力し、 3列目に関しては、該当する行の先頭行の文字列を 出力したいと思っています。 下記が当方の希望しているPerl実行後の出力結果です。 【テキスト編集後】 --------------------------------------- test ,abc ,AB ,VI/PI/SS ,SS/VS ,ma test ,cde ,AA ,VI/PE/PI ,SS/VS ,mb test ,cde ,AC ,PI ,SS ,mc --------------------------------------- このような編集をPerlで実行したいと思っているのですが、 どのような記述をすれば実行できるのか教えて頂けないでしょうか。 当方、Perlを始めたばかりで基本的なことを 伺っているのかもしれませんが すみませんが、ご了承ください。 宜しくお願いいたします。

  • Perlで二次配列は可能?

    毎度御世話になっております。 Perlスクリプトで二次配列のような配列の使い方は可能でしょうか? (A*B)種類の変数を配列の形で操作したいと考えています。 A,B共に8~256ぐらいで、処理の途中で増やせる様にしたいのです。 連想配列を用いればそれらしいことが出来るのではないかと思ったのですが、 うまく行きません。どうかお知恵を御貸し下さい。

    • ベストアンサー
    • Perl
  • perlのcgiで、変数の中身を表示させたい

    cgiで変数の中身を表示させたい perlのcgiで変数の中身を表示させたいのですが、うまくいきません ▽環境   レンタルサーバ ▽やりたいこと   通常のブラウザ画面に、変数の中身を表示させたい ▽現状   use Data::Dumper;   print Dumper($hoge));もしくは、warn Dumper $hoge;   とすると、下記エラーとなります Script Error The script did not produce proper HTTP headers. Please see the error log to see the detail of the errors. Depending on the server configuration, you can also run thisscript under CGIWrap debugging. Usually, either rename or linkthe script temporarily to a file which ends with .cgidextension, or add a AddHandler cgi-script-debug .cgiline to your .htaccess file. 指示に従い、.htaccessへ、AddHandler cgi-script-debug .cgiを追記すると、ズラズラ出てきたと何か出てきた中の一行に、変数の中身が表示されます ■質問事項   ▼変数の中身を確認する際、いちいち.htaccessへ追記するのが面倒なのですが、どうやって回避するのでしょうか?   ▼なぜ、変数の中身を確認しようとしただけで、Script Errorとなるのでしょうか?   ・書き方を間違えている?   ・書く場所を間違えている?   ・レンタルサーバの仕様?   ・perlのcgiだから? イメージしてるのは、PHPのvar_dumpなのですが…

    • ベストアンサー
    • Perl
  • Perl から csh 実行

    やまとです。 いつもありがとうございます。 Perl + csh を同時(?)に実行する方法を教えてください。 OSはSunです。 具体的にどのような処理を行いたいか簡単に説明しますと。 1.Perlでcshを実行(system関数?)し、cshで環境変数をセット(source)する。 2.cshで環境変数をセットしたら、ファイルを出力する処理が行われます。 3.Perlでcshによって出力されたファイルの内容を画面に表示します。 以下ソースを掲載します。(抜粋して) ================================================== = Perl ( test_perl.pl ) $data = "ABC"; $ret = system(`test_csh.sh $data`); ・ ・ ファイル(test.log)を開き、読込、画面に表示します(まだ作成してません。) ================================================== = Csh ( test_csh.sh ) source test_source.sh echo $1 > test.log ================================================== = test_source.sh setenv CLASSPATH .:/aaa・・・・・・ ↑ PATHの設定を行ってます。 ================================================== 画面に、「ABC」と出力させたいのです。 Perlからcshが実行されていないように思えるのですが、 Perlのsystem関数の使い方が誤っているのでしょうか? それとも、ClassPath等の設定をしなければならないのでしょうか? ちなみにコマンドから、 # test_csh.sh ABC と実行しますと、ファイルが出力され、かつ、sourceも実行されています。 Perlから実行する方法を教えてください。 説明が不十分であれば、補足いたしますのでご指摘ください。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • ダイナミックテキストに配列の中身を表示させたい

    初めて質問させていただきます。 FlashMX2004proでダイナミックテキスト(以下DT)を10個用意して、それぞれに配列の中身(文字が入ってます)を表示させたいのです。 1個目のDTにはmojiArray[0]を 2個目のDTにはmojiArray[1]を というふうに10個表示させたいのです。 DTのプロパティの変数のところにちゃんと変数名を入れてACで配列変数に文字を代入してるのですが表示されません。 配列の中身をDTに表示させることは可能なのでしょうか?お返事よろしくお願いします。

    • ベストアンサー
    • Flash
  • 外部jsファイルの変数に代入するには?

    初心者ですがjavascriptについて質問です。 なんらかの値を外部ファイル内の変数に代入させることは可能なのでしょうか? うまく説明できませんが・・・ あるjsファイル内の文字をリンク先の外部jsファイル内の変数の中に入れたいです。 <例> abc.js の中にある文字列"○○○" ↓ abc.jaから <a href="xyz.js">にリンク ↓ xyz.js の中の var xxx ="○○○" に、したいのですが・・・説明が下手ですみません。 わかる方是非教えてください。

  • テキストボックスの中身をリセット(クリア)したい

    ファイル(*.txtのみ)を読み込んで、テキストボックスに中身を表示させておりますが、2回以上ファイルを読み込んだ時、テキストボックスに書かれた内容を消した上で、読み込んだファイルの中身を表示させるように変更できないでしょうか。また、テキストボックスに書かれた内容をクリアするボタンの作り方も知りたいです。 例、1.ABCと書かれたテキストの読み込み→ABC   とテキストボックスに表示される    2.XYZと書かれたテキストの読み込み→ABC XYZ とテキストボックスに表示される これを2.を読み込んだ時、ABCを表示せずにXYZと表示したい コードの一部 Private Sub Command1_Click() CommonDialog1.Filter = "テキスト(*.txt)|*.txt|すべて(*.*)|*.*" CommonDialog1.FilterIndex = 1 CommonDialog1.Flags = cdlONFileMustExist '既存ファイルのみ読み込み CommonDialog1.CancelError = True On Error Resume Next CommonDialog1.ShowOpen If (Err = 0) Then FileRead CommonDialog1.FileName End If On Error GoTo 0 End Sub

  • 動的変数は作れますか?

    動的変数は作れるでしょうか? 不可能な場合、通常配列にするのが一般的でしょうか? ■呼び出し onClick="a(2)"; ■関数 function a(m){ test2 = "abc"; alert(test+m); } 期待する出力結果:abc は無理でした。以下が普通でしょうか? function a(m){ test[2] = "abc"; alert(test[m]); }

専門家に質問してみよう