• ベストアンサー

Requireできない...

requireされる側のファイルに、 $name = "A"; などと特定の文字A(仮に)を変数に代入しておくと、requireしたときにScript Errorになります。この1行というより、この文字Aを消すだけでエラーは解消されるのですが、これはどういう理由からでしょうか。 特殊な文字ではないので、よくわかりませんでした。

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

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

  • ベストアンサー
  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.1

以下のようなスクリプトをあなたの環境で実行してみてください。 ## -------------------------------- if($name = "A"){ print "A True\n"; }else{ print "A False\n";; } if($name = ""){ print "Null True\n";; }else{ print "Null False\n";; } ## -------------------------------- Perlの文法書なりを調べてみてください。 require関数は戻り値が真にならないとエラー(または続行不可)となります。 通常、その為に呼ばれる側のファイルの最後には「1;」を付けてください。

coop10
質問者

お礼

回答ありがとうございます。 もちろん[1;]はつけています。 そのスクリプトを追加してみましたが、やはりScript Errorでした。

その他の回答 (1)

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

可能ならその「require される側のファイル」を全部載せてください.

coop10
質問者

お礼

回答ありがとうございます。 申し訳ありませんが、重要なファイルですのでおみせするわけにはいきませんが、例えば、次のようにしても結果は同じです。 [test.cgi] - 705 #!/usr/local/bin/perl print "Content-Type: text/html\n\n"; require "require.ini"; print "$name \n"; exit; [require.ini] - 644 $name = "A"; 1;

coop10
質問者

補足

突然すいません。 解決しました。どうやらシフトJIS文字の影響だったようです。 http://homepage2.nifty.com/sophia0/faq.html 入力フォームから自動で変数に代入するため、今後対策を考えます。 ありがとうございました。

関連するQ&A

  • requireについて教えてください。

    こんにちは、require について教えてください。 require されるファイルの最終行は 1 を書くのが一般的ですが、 他の値を書くと何か問題があるのでしょうか? 以下の実験をしてみました。 -- require されるファイル array.pl -- #! usr/bin/perl -w use strinct; ['a','b','c',] -- 実行するスクリプト -- #! /usr/bin/perl use strict; my $array_ref = get_array_ref('array.pl'); print "$_n" foreach ( @{$array_ref} ); exit(); sub get_array_ref {   return eval {require $_[0]}; } -- 結果 -- a b c 結果はうまく行ったのですが、eval も含めてこの様な使い方は 間違っていませんでしょうか? よろしくお願いします。

  • perl でrequireされたファイル自身のフルファイル名を取得する

    perl でrequireされたファイル自身のフルファイル名を取得する方法を教えてください __FILE__ だとパス情報がありません。 また 起動したスクリプトではないので $ENV["SCRIPT_FILENAME"] , $0 では、取得できません。 どこに格納されているのでしょうか? %INCでは、無理ですし、@INCを使う方法では、信憑性にかけます requireするときにパスをグローバル変数に代入せずに どうしてもrequireされたファイル自身で 確実に正確な同じフォルダ名を取得する必要があるのでお願いします。 (※phpでは、__FILE__でフルパスで返ってくるので私の探し方が悪いだけだと思っています) perlでの取得方法の情報を お手数ですがよろしくお願いします

    • ベストアンサー
    • Perl
  • requireの使い方のどこがおかしいのでしょう?

    言語はperlです。 789.cgiから456.plを呼び出したいのですが、シンタックスエラーが出てきます。 789.cgiのrequireに関する行をコメントにしたら実行されるのですが…。 requireを使わずに、サブルーチン自体を789.cgiの中に書き込むことには成功しているのですが、 イマイチrequireを使った呼び出しのコツがわかりません。 どなたかご教授下さい。 以下にスクリプトを示しておきます。 よろしくお願いします。 *****以下789.cgi***** #!/usr/local/bin/perl use CGI::Carp qw(fatalsToBrowser); require "456.pl"; $a=12; $b=15; $d="xxxxxxxx"; $d=&plus(); print "content-type:text/html\n\n"; print <<"HTML_HTML"; <html> <head> <title> ヒアドキュメント </title> <body> ***** <br> $d <br> ***** <br> $a <br> ***** <br> $b <br> ***** </body> </html> HTML_HTML ***********以下456.pl************ sub plus { my $a=10; my $b=10; $c=$a+$b; return $c; }

    • ベストアンサー
    • CGI
  • 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
  • 自作関数  require_onceを書く場所

    関数を使い始めて間もないので、基本的な記述方法についてご教授願います。 以下のような書き方はしますか? //ファイル名Aには関数名A、ファイル名Bには関数名Bを記述 if(条件){    require_once("ファイル名A")    $変数x = 関数名A(引数y) }else{    require_once("ファイル名B")    $変数x = 関数名B(引数y) } もしくはこのように書くべきでしょうか? //ファイル名Cには関数名A、関数名Bを記述 require_once("ファイル名C")    if(条件){    $変数x = 関数名A(引数y) }else{    $変数x = 関数名B(引数y) }

    • ベストアンサー
    • PHP
  • シェル ファイルの中身によって特定の処理

    シェルスクリプトに関する質問です。 少しシェルで言語風なものを作ってみようと思い、作成したのですが、上手くいかないので質問させて頂きました。内容は、特定の文字がファイルに記載されているか判定して、 特定の文字だったら処理をするというものです。 現在、このようなソースになっています↓ #!/bin/sh - #ファイルを設定(仮) file_name="dummy.sh" #行数を変数へ格納 line=$(wc -l ${file_name}) #行数をlog.txtへ書き込む echo ${line} > log.txt #行数以外にファイル名があるので削除 sed -i "s/$file_name//g" log.txt #行数を格納 Line=$(cat log.txt) i=0 #全ての行を変数へ格納 #ここが問題 配列に変数が使えない!? while [ $i = ${Line} ] do array[$i]=$(sed -n "${i}p" ${file_name}) expr `${i} + 1` done # 格納した変数をチェックして、 # 指定された文字(hello)が書かれていればhelloと表示させる b=0 while [ $b = ${main_file} ] do if [ array[$b] = "hello" ] then echo "hello" fi expr `$b + 1` done ここで、配列を利用し、変数への代入が出来ませんでした。 ただ、エラーは表示されません。。。 環境はUbuntu10.10です。 何もいじっていないので、たぶん大丈夫だと思うんですが・・・ 何か解決策はありませんか? また、コレよりいい方法などがあればぜひ教えてください。

  • shスクリプトでftp接続してファイル転送したい

    テキストファイルの1行の文字列を読込んで ftpで、文字列と同名のファイルを別サーバに転送する shスクリプトを作成したいと思っています。 テキストファイルから読込んだ文字列を変数に格納して ftp接続後、putで変数を指定すると 『変数名のファイルがありません』 というエラーがでます。 エラーメッセージから、変数が変数として扱われていない。 ファイル名そのものとして扱われていると思います。 テキストファイルから読込んだ文字列をftpで使用するには どうしたらよいでしょうか? また、何か代替案はあるのでしょうか? 簡略化したshスクリプトの内容は以下の通りです。 ------------------------------------ #!/bin/sh read filename <./test.txt ftp -n host_name <<"EOD" user user_name password passive binary cd /export/test put filename bye EOD -----------------------------------

  • 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
  • 文字列から特定の文字を抜き出す

    こんにちは。 シェルスクリプトで文字列から特定の文字を抜き出し、 変数に入れたいのですが、うまくいきません。 申し訳ありませんが、アドバイスをお願いいたします。 文字列 $moji=aaa_bbb_ccc (文字は変動します) $a=aaa $b=bbb $c=ccc と"_"毎に変数に代入したい。 echo $moji | awk -F_ '{print $2}' で文字を標準出力に取り出すことはできるのですが、 そこから変数に代入する方法がいまいち分かりません。

  • require_onceについて

    MAMPを使用して開発しています。 MAMP/htdocsに入っているa.phpから同一階層にあるb.phpを呼びだそうと思い require_once('b.php'); と記述したのですが Warning: require_once(b.php): failed to open stream: No such file or directory in - on line 13 Fatal error: require_once(): Failed opening required 'b.php' (include_path='.:') in - on line 13 とエラーが表示されます。色々と試してみたもののうまくいかず。 アドバイスを宜しくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう