ここから本文です

perlで、phpで外部URLをfopenするのと同じことをしたいのですが

sho********さん

2008/8/1823:56:13

perlで、phpで外部URLをfopenするのと同じことをしたいのですが

phpで、以下のように記述されているソースをperlに移植したいのですが、単にopen関数を使用しただけではうまくいかないようです。
うまい方法を教えてください!

お願いします!
PHP---

@fopen("http://******.***/a.php?aaa=bbb&ccc=ddd","rb");

---

閲覧数:
2,069
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

やむさん

編集あり2008/8/1904:08:36

少し調べてみましたが、perlのopen関数ではURLファイル内の取得(いわゆるGET)は無理なようです。
通常はLWP::Simpleというモジュールを使うようです。
LWPはlibwww::perlという名前のようで、RedHat系のLinuxサーバなら
# yum install perl-libwww-perl
でインストールできるようです。(Windowsだったらごめんなさい。分かりません。)

下記のように実行したらちゃんと取得できました。

#!/usr/bin/perl
use LWP::Simple;
print get("http://localhost/index.html");

下記のサイトで結構説明してくれているようです。
http://homepage3.nifty.com/hippo2000/perltips/lwpcook.html

質問した人からのコメント

2008/8/25 18:26:27

ありがとうございました。
教えていただいたとおりにしたところ無事解決しました!

ベストアンサー以外の回答

1〜1件/1件中

nis********さん

2008/8/1905:39:12

ActivePerlならPPMを利用する関係でLWPは必ず入っているはずですけどね。
以前、回答したこともあるとおり、httpでアクセスしたいのであれば、LWPを使って取得するのが一般的。
あるいはHTTP::Liteを利用するとかですね。
Tie::Handle::HTTPやHTTP::Handleを使えばファイルハンドルで扱うこともできるはずです。

Tie::Handle::HTTP
http://search.cpan.org/~hachi/Tie-Handle-HTTP-0.02/lib/Tie/Handle/H...
HTTP::Handle
http://search.cpan.org/~psionic/HTTP-Handle-0.2/Handle.pm

参考:
Perlのopen絶対パスで読み込む
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1114654571

老婆心ながら@fopenとエラーを無視するようにしてますが、Perlだったらevalブロックで例外を処理するとか、
CGI::Carp qw(fatalsToBrowser)、KCatchなどで捕まえるとかってことを考えた方がよいかもしれません。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる