• ベストアンサー

useのあとに$変数を置けますか?

natsuki_tkの回答

回答No.1

出来ないと思います。 ロードされるタイミングの問題ですから、 requireならいけると思います。 #素朴な疑問なのですが、なぜ変数なのでしょう・・。

Scotty_99
質問者

お礼

回答ありがとうございました。疑問が解消できてよかったです。 >requireならいけると思います。 そうなんですよね。変数の問題が起きてしまって。 >#素朴な疑問なのですが、なぜ変数なのでしょう・・。 他人が書いたプログラムを改造しているのですが、 記述のルールでrequireなどすべて変数で表示されて いるので統一したいと思いました。 必要のないことなんですよね。

関連するQ&A

  • use スカラー変数とするには・・・

    初心者PERLプログラマーです。 独学で身の回りにPERL仲間がいないため、質問させてください。 スカラー変数を使用してモジュールをuseしたいのですが、どうしてもできません。調べてみましたが検索力の無さからか見つからず… 現在のコードをはしょって書きます ----------------------- my $a = "Hoge"; use $a; my $b = new $a(); $b->run; ----------------------- $aの部分を変数にせず、use Hoge;と書くとうごくので、変数にしたことによるエラーだと思います。 $aを"$a"としてみたりしてもダメでした。 わかるかたご教授いただければ幸いです。

    • ベストアンサー
    • Perl
  • use strict;でエラー

    use strict;と書くとエラーになります。 strict.pmをstrict1.pmにしてuse strict1;にするとエラーはなくなります。 strictは予約語ですか? これと同じ現象になった人はいませんか?

  • use strictとは

    use strict;と書いた行でエラーになっているようです。 strict.pmが無いからでしょうか? strict.pmはjcode.plみたいに、使いたい人がググってダウンロードしてサーバに置くものなんでしょうか?

    • ベストアンサー
    • Perl
  • use strictを宣言してlocal変数を使うには?

    Perl初心者です。初歩的な質問ですが、 サブルーチンの中で my だと、その下の{ } ブロックではmyで宣言したローカル変数がスコープされないので  localを使うのではないかと思いますが、 それだと、use strictではエラーになります。 こんなときどう処理したらよいのでしょうか。

    • ベストアンサー
    • Perl
  • use

    OS(win xp)を入れなおして、 Active Perl をインストールしなおしたのですが、 use Benchmark; と書いたスクリプトをコマンドプロンプトで走らせると、 "use" not allowed in expression at log.cgi line 4, at end of line syntax error at log.cgi line 4, near "use Benchmark" Execution of log.cgi aborted due to compilation errors. とエラーが出ます。OSを入れなおす前もたしかActive Perlを普通にインストールし、普通にベンチマークとっていたと思うので、「あれ・・?」って感じです。/usr/local/lib/の中にもちゃんとBenchmark.pmが入っているようなのですが、なにがいけないのでしょうか。

    • ベストアンサー
    • 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
  • use lib qw(変数名);は無理?

    モジュールへのパスを設定するのに以下のようにすると use lib qw($cmd_path); Can't locate BL/FileIO.pm in @INC (@INC contains: $cmd_path /usr/lib/perl のようにエラーになり、$cmd_path が展開されません。 use lib qw("$cmd_path"); use lib q"$cmd_path"; など色々試したのですが、ダメでした。 設定する方法はあるのでしょうか? $cmd_path はベタ書きしかないのでしょうか?

  • use Util;を使いたいのですが・・・

    初歩的な質問で失礼いたします。 CentOSのサーバーでcgiでプログラムを作成しているのですが、 「use Util;」を宣言時にエラーが発生してしまいます。 【エラー内容】 Can't locate Util.pm in @INC (@INC contains: ./lib /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi yumやcpanのコマンドでUtilモジュールをサーバーに入れればよいのですが、 「use Util;」はどのモジュールになるのかがわからず困っております。 試しに、yum list コマンドで Util が付いているパッケージを探し、yum install してみましたが解決されませんでした。 (yum -y install perl-Util-SelfDestruct.noarch など) ご存じな方がおられましたら、ご教示お願いします。 宜しくお願い致します。

  • Fatal error: Cannot use []

    メンバ変数で var $list = array(); と宣言しておき、 関数内で $this->$list[] = 'text'; を実行するとエラー”Fatal error: Cannot use []”が現れます。 原因分かる方教えていただけますでしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • メインルーチンの変数をモジュールに渡す

    Perlの勉強をし始めの者なんで、恥ずかしい質問ですけど・・・ モジュールの使い方です。 以下のプログラムではTest_module.pmで定義した変数$testをメインルーチンでprintしています。 ***** メインルーチン *****  #perl /usr/bin/perl  use Test_module;  our $test=10;  print $Test_module::test; ***** Test_module.pm *****  package Test_module;  our $test=10;  1; これはちゃんと動いています。 ところが逆にメインルーチンで定義した変数$testをTest_module.pmに渡そうとすると、うまくいきません。 以下のプログラムをどう直せばいいのでしょうか。 ***** メインルーチン *****  #perl /usr/bin/perl  use Test_module;  our $test=10;  &Test_module::print_test(); ***** Test_module.pm *****  package Test_module;  sub print_test {  print $Main::test;  }  1;

    • ベストアンサー
    • Perl