外部ファイルの読み込みにrequireを利用している際のエラー

このQ&Aのポイント
  • 外部ファイルの読み込みにrequireを利用する際、指定したファイルパスをスカラー変数で行うとエラーが発生します。
  • エラーメッセージによると、指定したファイルパスが見つからないというエラーが出ています。
  • さらに、require文でスカラー変数が使えない可能性もあるため、他の方法を探してみることを検討しています。
回答を見る
  • ベストアンサー

外部ファイルの読み込みにrequireを利用し、指定ファイルパスをスカ

外部ファイルの読み込みにrequireを利用し、指定ファイルパスをスカラー変数で行うとエラーとなる ファイルには、外部実行の格納ファイル名が入っています。 処理をしたいことは、指定ファイルにある変数を利用して、外部ファイルを実行することです。 実行すると以下のエラーを出しています。 ------------------------------------------------------------------ Software error: Can't locate ./$cfl/puls.cgi in @INC ...略 ------------------------------------------------------------------ プログラムは以下の内容です。 ------------------------------------------------------------------ 省略 open(DATA,"$file")|| die &error(" $file を読み込みopen出来ません"); flock(DATA,1); @lines = <DATA>; foreach $line(@lines){ ($afl,$bfl,$cfl,$efl,$y3) = split("<>", $lines1); require './$efl/puls.cgi'; } close(DATA); 省略 ------------------------------------------------------------------ そもそもrequireでスカラー変数が使えないのか? そのあたりも調べてみたのですが分かりませんでした。 また今回の方法以外にやり方がございましたらご指導頂きたく書き込みいたしました。 お手数かけます。 よろしくお願いいたします。

  • Perl
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

require './$efl/puls.cgi'; となっているのを require "./$efl/puls.cgi"; に変えるとどうでしょうか。 変数$eflを展開するには二重引用符を使わないといけませんよ。

hihin2003
質問者

お礼

回答ありがとうございます。 以下の対応早速やってみました。 >require "./$efl/puls.cgi"; 見事に動作いたしました。 ありがとうございます。 >変数$eflを展開するには二重引用符を使わないといけませんよ。 そうなんですね。 勉強不足です。アドバイスありがとうございます。

関連するQ&A

  • PHPでhttp上の外部ファイルをrequireしたい

    PHPでhttp上の外部ファイルをrequireしたいのですが、変数がうまく 参照できません。例えば以下のようにすると、common1.phpの中で $a=$a+1 と書いても、11と出力されずに10と出力されます。 (require自体はうまく行っているようで、common1.phpの中で print等を書くとそれ自体は問題なく実行されます。) require("./common1.php")のようにファイル指定だと問題なく11と 出力されます。原因・解決方法等ご存じのかたがいらっしゃったら 教えてください。FedoraCore4 PHP5.0.4です。 <?php $a = 10; require("http://hogehoge/common1.php"); print "$a"; ?>

    • 締切済み
    • PHP
  • URL指定での外部ファイルの読込

    this.loadVariables("http://hogehoge.com/hoge.cgi") のようにURL指定で、外部ファイルの変数をFLASHにロードしたいのですが、読み込むことができません。 何かよい方法をアドバイスお願致します。

    • ベストアンサー
    • Flash
  • Perl require 共通の変数 外部ファイル

    ファイルが多くなってきて、その中でも共通の変数があるので 外部ファイルにまとめたい・・・ ~test.pl~ #!/usr/bin/perl require("testcommon.pl"); print qq(Content-type: text/html\n\n); print <<END; <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=$CHARSET"> <title>外部CGIファイル読み込み</title> </head> <body> END print qq($test<br>$data<br>$NEW); print <<END; </body> </html> END exit; 1; ~testcommon.pl~ #!/usr/bin/perl $test = "テスト"; $data = "テストです"; $CHARSET = "UTF-8"; $NEW ="サーバー"; 1; まずこれが現在テスト中で サーバーAでは、これでいけているのですが、 サーバーBでは、これではいけず、 エラーログを見ると 「@INC~/usr/local/lib64/perl5~」 とでてます。これがどのような意味をささしているのかわからないです。 いつも1行目に書く「#!/usr/bin/perl」の部分を書き換えてみたのですが・・・ さらにサーバーBでは、ログファイルなど開く際、フルパスでないと開けません。 require("testcommon.pl");←これですと インターネットサーバーエラーとなってしまいます。 これはエラーログを見るとフルパスで指定と書いていたので、 require("/path/path/path/testcommon.pl"); のようにしました。 これで、一応表示はできたのですが、 testcommon.plで新しい変数を書き加えると、($NEW123 = "追加したい変数";) 表示されません。 またCHARSETでUTF-8を指定してますが、 更新や、再度ページに入ったりすると、 CHARSETの変数が反応していなかったりしています。ページでソースを確認すると 変数の部分が空欄になってます。 これは require("/path/path/path/testcommon.pl"); が読み込んでいなかったり読み込んでいたり もしくは、一度なにをしたのかわからないですが、このフルパスの場所に testcommon.plのファイルをおいて、そのときのままになっている など、原因、対処がわからず困っております。 ※というより結論としては、 共通の変数を1つのファイルでしようしたいということです。 ~common.pl~ $a = 123; $b = "テスト"; $c = 2; ~test1.pl~ $TEST = $a * $c; print "$b$TEST\n"; #結果「テスト246」 ~test2.pl~ $TEST123 = $a + $c; print "$TEST123$b; #結果「125テスト」 このような感じ・・・(+_+)

  • requireするファイルのパス

    プログラミングの知識はほぼ皆無なのですが、仕事でRUBYを使わなければならなくなり、オープンソースを弄っているところです。 rbファイルの記述に require '○○' とあるのですが、判らなかったので無視して実行してみたところ、 C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot loa d such file -- ○○ (LoadError) from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require ' from makeindex.rb:2:in `<main>' というエラーが出ました。 ○○ファイルを色々なディレクトリに置いてみたのですが、どれも同じエラーでした。 一般的に、○○ファイルは何処に置くべきなのでしょうか。 尚、環境は以下の通りです。 WindowsXP RUBY 1.9.3 「require '○○'」の記述があるrbファイルの場所 c:\a rbファイルはカレントディレクトリをaにしてから実行 プログラマーの方からすれば意味不明な質問かも知れませんが、ネットで調べてみてもさっぱり判らなかったので質問させて頂きました。 宜しくお願いします。

    • ベストアンサー
    • Ruby
  • Excelファイルの読み込み

    VBから既存のExcelファイルをフィールドごとに読み込む プログラムを作成しています。 xlFileName = App.Path & "strFileName" Open "xlFileName" For Append As #1 Line Input #1, Str Close #1 これで実行すると「変数は省略できません」というエラー が出てしまいます。 原因がわからないのでよろしかったらご教授ください。 お願いします。

  • 外部ファイル名を変数で指定できるか?

    JavaScriptで参照する外部ファイルを、ヘッダー部で以下のように記述しています。 <script language="JavaScript" src="Data.js"></script> このsrc=で、指定するファイルを、変数で指定することは可能でしょうか? 試しに <script language="JavaScript"> <!-- var Src_File = "Data.js";  src=Src_File; //--> </script> と記述しても、エラーとなってしまいました。 変数を使いたい理由は、ラジオボタン等を使って、参照する外部ファイルを動的に切り替えたいのです。 よろしくお願いします。

  • ファイル指定ができない!?ファイルが見つからない・・・。

    こんばんわ。 現在、IIS+ActivePerl(最新)という環境でCGIを動かそうと考えています。 Unix系サーバで実行した場合は問題なく動くのですが、IIS環境で動かすと、外部のファイルつまり掲示板のログファイルやjcode.plなどが見つかりませんと表示され動作してくれません。 私のCGIがだめなのかと思ってKentさんのCGIやいろんな人のいろんなCGIでテストしましたが、駄目でした。 ActivePerlの設定がまずいのかとおもいきや、単純なもの(外部ファイルを使わないもの)はきれいに動きました。 ファイルが見つからないとかCan't location~と出るのでIIS+Active~には問題ないと思うんですが・・・。 ファイルの指定方法がまずいのでしょうか? どうしたもんでしょう・・・誰か思い当たるどんなことでも結構です・・・教えてください。 お願いいたします・・・。

    • ベストアンサー
    • CGI
  • Flashの外部ファイル読み込みについて

    外部のテキストファイルを読み込みたいのですがプレビューすると Error opening URL "file:///D|/new.txt" というウィンドウが出て、ファイルが読み込めません。 (ちなみに読み込みたいファイル名はnew.txtです) Flashのファイルもnew.txtのファイルも同じDドライブ上にあります。 テキストファイルの先頭に変数と"="は入力していますし 、設定した変数とテキストファイルの変数が一致しているかも確かめました。 何が原因なのか分かりません。 詳しい方がいらっしゃいましたら教えてください。よろしくお願いします。

  • 外部CGIファイルの読み込み

    アクションスクリプトで外部CGIファイルを読み込む動作を勉強中です。 色々なサイトや書籍を参考にさせて頂いているのですが、その中で読み込みファイルを"ファイル名+ランダムな数字"としているものがありました。 説明では、『ブラウザのキャッシュが使われない為、毎回違うデータを作成する』とあるのですがなぜこれで動作するのかが分かりません。 実際のスクリプト部分は… CGIFile = "test.cgi?" + Math.floor (Math.random () * 1000); myLoadVars.load (CGIFile); です。 これでは読み込み対象のファイル名が"test.cgi?319"などとなってしまうのでエラーとなるように思うのですが…。 実際、書き出してみると"Error opening URL"と出力されます。 ローカルサーバー(ActivePerl使用)で試してもCGIは読み込まれません。 ですが、レンタルサーバー上にアップしてみるとちゃんとCGIが読み込まれていました。 なぜこのようになるのでしょうか? ローカルサーバーとホストサーバーにアップした場合で結果が変わるのもよく分かりません。 他のCGIは動作するのでローカルサーバーの設定は合っていると思うのですが…。perlのバージョン等でしょうか?CGIは全くの初心者でその辺のことはまったく分からないのですが…。 『ブラウザのキャッシュが使われない為…』とありますがこの意図も掴めずにいます。 ご教授頂ければ幸いです。よろしくお願い致します。 環境はwindowsXP,Flash8as2.0です。

    • ベストアンサー
    • Flash
  • エクセルVBAを利用したフォルダ内にあるファイルの指定エクセルシート貼り付け

    フォルダ内にある任意のファイル(拡張子のないテキストデータ)を開き、指定されたエクセルのシートに貼り付けするといった方法がわかりません。 どなたか分かる人がいましたら教えていただきたいです。 現在openなどを使用していますがファイルを指定すれば実行できるのですが任意のファイルになるとエラーになってしまいます。