外部ファイルのサブルーチンを(requireを使って)読み込んで使用したいのですが、どうもうまく行きません。
cgiファイルとplファイル、どっちも作って両方試してみましたがだめでした。
なにかこの方法だとできないことなど制限ってあるのでしょうか。
それとも、何か特別な処理が必要なのでしょうか。
原因が分からず困っています。

A 回答 (1件)

どのようにうまくいかないのか分からないので、


いくつか考えられる点を上げておきます。

1.requireされるファイルの最後で、1(真)を返していない。
ファイルの最後(サブルーチンの外)に「1;」等の記述があるか確認してください。

2.requireされるファイルのサブルーチンから、必要な変数にアクセスできない。
変数がmyで宣言されていると、外部ファイルからアクセスできません。
適切にスコープを宣言してください。

3.そもそもrequireできていない。
シェルが使える環境でしたら、「perl -e 'require "file";'」を実行して、
エラーが出ないか確認してください。(fileは実際のファイル名に置き換えてください。)

思い当たる箇所がなければ、perl -wc でのエラー表示や、
サブルーチン自体を、差し支えない範囲で載せていただけると
分かるかもしれません。
    • good
    • 0
この回答へのお礼

お答えいただいて本当にありがとうございました。
ご指摘どおり(1)が原因でした。
やっぱり特別な処理が必要だったんですね。

おかげさまで、正常に動くようになってとても助かりました。

お礼日時:2002/04/07 22:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qカッコ悪い使い方

カッコ悪い使い方ってあると思います。
モノの使い方、言葉の使い方、ファッション、
店の利用の仕方、あるいは、このサイトやネットの使い方etc
皆さんの考える「この使い方はカッコ悪い」を教えて下さい。

Aベストアンサー

ものの使い方ではないんですが、ひとつ挙げるとすれば、その人が外見的にカッコ良い人でもそうでなくても、いかにもカッコつけた態度をとっている人、つまり自意識過剰が見え見えの人はカッコ悪いと思います。

逆に言えば、自分に自信が持てるってことは、すごく幸せなことかも。
ま、それがその人の性格だったら、どうしようもないですけど・・・(-_-;)

QCGIからCGIのサブウィンドウ(?)をあける方法

CGIを利用してホームページを作成しています。

CGIで帳票形式の一覧表を作成し、その中のイメージをクリックすることによってサブウィンドウ(これもCGIで作成したものです)をあけようとしているのですが、知識が乏しいため、上手く処理できません。

ソース(抜粋の為アドレスは消してありますが絶対パスで書いてあるとして下さい)
print "<TD><IMG src=~graph.gif onclick="window.open(~graph.cgi?code=$ID, graph,'width=400,height=400');"><BR></TD>\n";

これだとどうしてもエラーが出てしまいます。
どなたか改善方法を教えてください。また、もっと良い方法があるならそちらも教えて頂きたいです。

Aベストアンサー

print "<TD><IMG src=~graph.gif onclick=\"window.open(~graph.cgi?code=$ID, graph,'width=400,height=400');\"><BR></TD>\n";

この様にしてみていただけますか?
print文を""で囲まれていますが、onclick=の後ろの"の部分で""の囲まれている部分が終わってしまっているためにエラーが出ているのだと思います。
"の前に\をつけることにより回避出来ますので試してみてください。

Qラブホテルで、本来以外の使い方をした経験、ありますか?

本来の使い方は、皆さん知っていますね?
そうではなくて、本来以外の使い方です。
テレビで「ラブホ女子会」が流行っている話をしていましたが、例えばそういうこととか、単に寝るために泊まったとか、出張で使ったとか、カラオケとか、昼寝とか・・・とにかく、本来の使い方ではない使い方です。
もちろんその後も、本来の使い方はしないでチェックアウトしたという前提です。

ラブホテルによっては、そういう使い方を認めないところもあるようですが、本来以外の使い方をした経験はありますか?

Aベストアンサー

お盆に家族旅行に行ったとき高速で30Km渋滞と表示されていたので、雄琴温泉に仕方なく宿泊しようとした。何処も満室で仕方なくラブホに家族で宿泊した。
回転するベッドや明るさの調整できる風呂があり、子供が大はしゃぎで遊んでいた。
妻とこんな使い方もあるなーと話をした。家族全員だと雄琴なら6,7万円必要なところ8000円ですみ
朝食もディナーのような肉料理だった。フロントの人は、普通はこんな使い方しないけど、いい勉強になった
こんな使い方も考えてみたいと言っていた。

QヒアドキュメントでHTMLを書いて次へをクリックするとサブルーチンが表示される方法は?

こんにちわ。perlでCGI学んでます。初心者です。

CGIの中にヒアドキュメントでHTMLを書きました。
そのページの最後に「次のページへ」というフォームボタンをつけました。ボタンをクリックするとサブルーチンの次ページが表示されるようにしたいのですが、うまくいきません。ボタンはinputタグのボタンにしたいので、テキストリンクにはしません。

「次のページへ」をクリックするとサブルーチンのpage1の中が表示されるようにするにはどうしたらいいですか?hiddenタグをボタンの下に書けばいいといわれたのですが、どうもうまくいきません。ご存知のかた、ご教授願います。


以下のようにソースを書きましたがうまくできません。。。。

#!/usr/bin/perl

$script="test.cgi"

print <<"EOF";
Content-type: text/html

<html>
<head>
<meta content="text/html; charset=shift_jis">
<title></title>
</head>
<body>

あなたの注文したものは●●です。
よろしかったら次のページへを押してください。

<form method="post" action="$script">
<input type="submit" value="次のページへ">
<input type="hidden" name="page1" value="page1">
</form>

</body>
</html>
EOF

####サブルーチン######################
sub page1{

print <<"EOF";
Content-type: text/html

<html>
<head>
<meta content="text/html; charset=shift_jis">
<title></title>
</head>
<body>
お買い上げありがとうございました。
</body>
</html>

EOF

}

こんにちわ。perlでCGI学んでます。初心者です。

CGIの中にヒアドキュメントでHTMLを書きました。
そのページの最後に「次のページへ」というフォームボタンをつけました。ボタンをクリックするとサブルーチンの次ページが表示されるようにしたいのですが、うまくいきません。ボタンはinputタグのボタンにしたいので、テキストリンクにはしません。

「次のページへ」をクリックするとサブルーチンのpage1の中が表示されるようにするにはどうしたらいいですか?hiddenタグをボタンの下に書けばいいといわ...続きを読む

Aベストアンサー

送信された値の取得にはCGI.pmかcgi-lib.plを使いましょう。
こちらの記事がおすすめです。

「CGI.pmを使ってみよう」
http://www.futomi.com/lecture/form/cgi-pm.html

「cgi-lib.plを使ってみよう」
http://www.futomi.com/lecture/form/cgilib.html

で、好きな変数に、
<input type="hidden" name="page" value="page1">
で指定したページ数を入れます。
CGI.pmなら

use CGI;
$q = new CGI;
$page = $q->param('page');

cgi-libなら
require "cgi-lib.pl";
&ReadParse(\%input);
$page = $input{'page'}

って感じですね。
これで、$pageに指定したページ数が入りました。

そしたら、if文で$pageに入った値をチェックして、
その値によって、使用するサブルーチンを振り分けたりするわけです。

#失礼かとは思いますが、回答に対する補足を読んでいると、質問者さんはまだここで具体的な処理方法の質問をできる段階ではないように思います。
#参考URLに初心者さん向けのperl/CGI解説サイトのアドレスをいくつか入れておきますので、訪問してみてください。

参考URL:http://www.futomi.com/, http://www.aimix.jp/cgi/, http://www.site-cooler.com/kwl/perl/, http://perl.misty.ne.jp/

送信された値の取得にはCGI.pmかcgi-lib.plを使いましょう。
こちらの記事がおすすめです。

「CGI.pmを使ってみよう」
http://www.futomi.com/lecture/form/cgi-pm.html

「cgi-lib.plを使ってみよう」
http://www.futomi.com/lecture/form/cgilib.html

で、好きな変数に、
<input type="hidden" name="page" value="page1">
で指定したページ数を入れます。
CGI.pmなら

use CGI;
$q = new CGI;
$page = $q->param('page');

cgi-libなら
require "cgi-lib.pl";
&ReadParse(\%input);
$pa...続きを読む

Qこのお箸の使い方ってOKなんですか?はたして疑問

たまに目にする箸の使い方。
フォークとナイフのように右と左に1本づつ持って
何かを切る、という箸の使い方って正しいんでしょうか。
私個人的にはそういう使い方を目にすると
嫌悪感を覚えるのですが。以前テレビを見ていたとき
君島十和子さんが堂々とそういう使い方をするのを
見て驚きました。ネットで調べたけれど、この使い方に
ついては見つけることができませんでした。
どなたか教えてください。

Aベストアンサー

調べてきました。
「ちぎり箸」というそうで、間違った使い方のひとつとのことです。

参考URL:http://www.table-manners.org/dainty_kaiseki/chopsticks/

QこのCGIサブルーチンを解説してください。

http://oshiete1.goo.ne.jp/kotaeru.php3?q=393199
の続きのようなかんじですが…。

下記のコードがわかりません。
おわかりになるかた解説してください。


sub setCookie{
local($tmp, $val);
$val = $_[1];
$val =~ s/(\W)/sprintf("%%%02X", unpack("C",$1))/eg;
$tmp = "Set-Cookie:";
$tmp . = "$_[0]=$val;";
$tmp . = "expires=Thu, 1-Jan-2030 00:00:00 GMT\n";
return($tmp);
}


1行目:サブルーチン名
2行目:$tmp,$valをそれぞれローカル変数に設定。
3行目:?
4行目:$valを16進数から1バイトずつ変換?
5行目:$tmpに"Set-Cookie:"を代入。
6行目:$tmp.に"$_[0]=$val;"を代入。
7行目:$tmp.に"expires=Thu, 1-Jan-2030 00:00:00 GMT\n"を代入。
8行目:?

というところまではなんとか解釈したのですが、「?」の部分がわかりません。

Set-Cookieヘッダを作成しているらしいのですが…。

http://oshiete1.goo.ne.jp/kotaeru.php3?q=393199
の続きのようなかんじですが…。

下記のコードがわかりません。
おわかりになるかた解説してください。


sub setCookie{
local($tmp, $val);
$val = $_[1];
$val =~ s/(\W)/sprintf("%%%02X", unpack("C",$1))/eg;
$tmp = "Set-Cookie:";
$tmp . = "$_[0]=$val;";
$tmp . = "expires=Thu, 1-Jan-2030 00:00:00 GMT\n";
return($tmp);
}


1行目:サブルーチン名
2行目:$tmp,$valをそれぞれローカル変数に設定。
3行目:?
4行目:$valを1...続きを読む

Aベストアンサー

とりあえず?の部分だけ。
>$val = $_[1];
これはサブルーチンの引数を取得しています。
$res=&sub_test(a,b);
このような文でaとbが引数となります。
この引数は@_という配列に順番に格納されます。
この配列の2番目を表すのが$_[1]です。
そのため$_[1]には二番目のbが入ります。

>$val =~ s/(\W)/sprintf("%%%02X", unpack("C",$1))/eg;
これはURLエンコードですね。特殊文字や漢字(2バイト文字)を%と16進表示(2桁)に変換しています。

>return($tmp);
これはサブルーチンの返り値ですね。
先の例では$resに入る値です。
正確には&sub_test(a,b)自体がこの返り値そのものになります。
print &setCookie();

print Set-Cookie:~;
は同じ意味と言うことです。

以前の質問から$_[0]はクッキー名、$_[1]はその値になると思います。
その値だけをURLエンコードしてSet-Cookieの文を作って返しているということです。
ちなみに$tmp.ではなく.=で連結するという意味です。
$tmpに.=で内容をつなげているということです。

とりあえず?の部分だけ。
>$val = $_[1];
これはサブルーチンの引数を取得しています。
$res=&sub_test(a,b);
このような文でaとbが引数となります。
この引数は@_という配列に順番に格納されます。
この配列の2番目を表すのが$_[1]です。
そのため$_[1]には二番目のbが入ります。

>$val =~ s/(\W)/sprintf("%%%02X", unpack("C",$1))/eg;
これはURLエンコードですね。特殊文字や漢字(2バイト文字)を%と16進表示(2桁)に変換しています。

>return($tmp);
これはサブルーチンの返り値で...続きを読む

Q日本語 「よう」の使い方

「よう」の使い方で同じ使い方のものを選ぶ問題の中で、
 1. 彼の家は大きくて、お城のようです。と
 2. 彼は日本人のように上手に話せます。が、同じ「よう」の使い方になっていました。1.は名詞+のようだ。 2.は名詞+のように+名詞or形容詞の使い方だと私は思うのですが......。1.と2.が同じ使い方になるのはどうしてなのでしょうか........?教えてください。

Aベストアンサー

コメントにお答えします。

まず、最初のご質問文の中にある誤りを指摘していませんでしたが、
 2.は名詞+のように+名詞or形容詞
は誤りで、
 2.は名詞+のように+動詞or形容詞or形容動詞
とすべきです。


では、本題。

>>>1.と2.の「よう」の意味は同じ、使い方は同じではないということですか??????。

問題は、解答者に対してこの2つの比較を求めています。
1「~のようです」(「ようです」の終止形)
2「~のように」(「ようだ」の連用形)

あなたの考え方は、
 1.は名詞+の+「ようだ/ようです(=終止形)」。
 2.は名詞+の+「ように(=連用形)」+動詞or形容詞or形容動詞
となっているから、使い方は異なるのではないか、ということですよね。

しかし、
国語(日本語)の問題で「同じ使い方のものを選べ」という問題がある場合、
単に活用形が異なるだけの言葉同士を「使い方が違う言葉」として扱うことは、通常ありません。


「お城のようだ/ように/ようです」「日本人のようだ/ように/ようです」は、
A + の + ようだ/ようです = 「Aのようだ/です」
の形です。
つまり、「形として、使い方が同じ」です。

そして、どちらも
・「Aではないけれども、Aに似ている」
・「Aではないけれども、Aの感じがする」
という意味になります。
つまり、「意味として、使い方が同じ」です。

ですから、1と2は、「形としても、意味としても、使い方は同じ」ということになります。


では!

コメントにお答えします。

まず、最初のご質問文の中にある誤りを指摘していませんでしたが、
 2.は名詞+のように+名詞or形容詞
は誤りで、
 2.は名詞+のように+動詞or形容詞or形容動詞
とすべきです。


では、本題。

>>>1.と2.の「よう」の意味は同じ、使い方は同じではないということですか??????。

問題は、解答者に対してこの2つの比較を求めています。
1「~のようです」(「ようです」の終止形)
2「~のように」(「ようだ」の連用形)

あなたの考え方は、
 1....続きを読む

QCGIファイルとplファイル

私はウィンドウ2000を使用していますがCGIファイルとplファイルを開こうとすると『ファイルを開くアプリケーションの選択』が出てしまい開くことができません。
何がいけないのでしょうか?教えてください。

Aベストアンサー

これは、エキスプローラでfileとして開こうとしているのでしょうか?
それともhttpdを立ち上げた状態でCGIとして開くと言う話でしょうか?

そのcgiがperlなどのスクリプトでしたら中身はテキストですから
エキスプローラでfileとして開くのならアプリケーションの選択で
メモ帳を指定するなり他のテキストエディタを指定すれば開けますが?
 **但し、CGIは場合によりcharsetがEUCだったり
改行コードがUNIX用だったりしますので、
その場合はメモ帳だと旨くいきません
フリーウェアのテラパッドをお勧めします。
http://www5f.biglobe.ne.jp/~t-susumu/library/tpad.html

Qタイガーバームの使い方

おみやげでタイガーバームを頂きました。使い方を教えて下さい。
基本的な使い方から意外な使い方まで、何でもお願いします。

Aベストアンサー

「何にでも効く」というふれ込みの万能?軟膏ですね。(笑)香港やシンガポールにはこれで大金持ちになった方が作った「タイガーバームガーデン」なるものがありました。
基本的には筋肉痛や肩こりなどに効くとされていますが、匂いがものすごいため、人前に出るときにはどうかと思います。
使用法は、少量をとり、肌に良くすりこみます。さらにマッサージをするすと、有効成分が浸透しやすく、いっそう効果的だそうです。
でも、けして切り傷や生傷には使用しないで下さい。 また体の粘膜部分など敏感なところへの使用もだめですよ。

Qcgi-lib.pl: Unknown・・・のエラーについて

すみません。どなたかご存知の方教えてください。CGI初心者です。メールフォームのようなものを作っており、実験段階でつまづいています。ファイルをアップし、htmlページから送信すると
「cgi-lib.pl: Unknown Content-type: text/plain 」といった表示がされてしまいます。これはなんの原因が考えられるのでしょうか?
宜しくお願いいたします。

Aベストアンサー

cgi-lib.plが存在しない。
または指定のパスが間違っているとか。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報