CGI-BBS > CGI > Perl > Perlの改造でライブラリーファイルを別のサーバーに設置したい。


カレッヂ
カレッヂ


質問者 小野塚貴弘  投稿日 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/
サーバのOS:UNIXサーバ
パソコンのOS:WinNT系
エディタ:メモ帳
FTPソフト:NextFTP
サーバ移転:していない
改造:している 改造前正常動作
CGI習熟度:advanced

回答者 しゅんじ  [削除]  投稿日 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裏技