カレッヂ |
質問者 小野塚貴弘
投稿日 2004/1/8(木) 22:44:58
require './data/cgi-cpry.ini'; 現状上記のようにライブラリーファイルが設置されています。 cgi-cpry.iniを別のサーバーに設置に設置する場合どのようにしたらようのでしょう? require 'http://www.zyforce-inc.com/cgi-cpry.ini'; でやってみたらできませんでした。
プロバイダ参照:http://www.zyforce-inc.com/ |
回答者 しゅんじ
[削除]
投稿日 2004/1/9(金) 12:00:44
ファイルは本来は eval の一致である do-FILE メカニズムを通してインクルードされます。 とあるように、perlのファイルを開く処理を使用して、ライブラリをインクルードするようですので、 直接URLから"require"するのは無理と思います。 ちょうど、下のようにWebのファイルを読もうとしても、読むことは出来ないのと 同じ感覚だと思います。 open(IN,"http://www.zyforce-inc.com/cgi-cpry.ini"); my @Array = <IN>; close(IN); ちなみに、ライブラリを使用すれば、Webページを読むことは出来ます。 しかし"require"は無理でした・・・・・ 他のライブラリを使用すれば可能なのかは、ちょっと分かりません。 |
回答者 やまだ
[削除]
投稿日 2004/1/9(金) 22:08:26
libwwwでライブラリファイルをgetして、特定ファイルに書き出してから、 requireすりゃいいかなと思います。 例えば、 use Net::HTTP; my $s = Net::HTTP->new( Host => "anything.host" ) || die $@; $s->write_request( GET => "/~test/test.txt", 'User-Agent' => "Mozilla/5.0" ); my($code, $mess, %h) = $s->read_response_headers; open(OUT,">test.dat") || die "$!"; while (1) { my $buf; my $n = $s->read_entity_body($buf, 1024); die "read failed: $!" unless defined $n; last unless $n; print OUT $buf; } close OUT; require "test.dat"; &test("test"); unlink "test.dat"; ---test.txt--- sub test{ print @_,"\n"; } 1; |
質問者 小野塚貴弘
[削除]
投稿日 2004/1/13(火) 16:31:25
簡単に説明するとシリアルキーの外部ファイルからシリアルキーを読んで 一致すれば使用可能にするものを作りたいと思っているのです。 USERNAME,sirial_key,status -------------------------------- zyforce-inc,123456789,0 |
回答者 やまだ
[削除]
投稿日 2004/1/13(火) 20:32:52
require 'http://www.zyforce-inc.com/cgi-cpry.ini'; にシリアルキーを入れているのですか? てっきり、関数など共有資源を入れているものだとばかり思っていました。 で、そのシリアルキーをcsv形式で入れているなら、そもそもrequireとして読み込めないはずです。(for syntax error) use Net::Http;を使うなりして、外部にあるシリアルキーを一旦、持ってきて保存して、 普通にopenして読み込むのがいいのではないでしょうか。 requireにする必要性はないと思います。 それから、以前の例でのURLを書き忘れていました。(例のURLなので実際には存在しないホスト) http://anything.host/~test/test.txt |
返信(回答)する
Web裏技 |