• ベストアンサー

モジュールを使わずhttpデータ取得

UNIX,LINUX,WinのPerlで動きなおかつ、モジュール(lwpなど)を使わずhttpデータ取得したいのですが何かいいサンプルなどないでしょうか? お手数おかけしますが、よろしくお願いします!

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

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

  • ベストアンサー
  • alicia-y
  • ベストアンサー率40% (85/208)
回答No.1

LWP を使用しないわけは何ですか?素直に使用して方がいいですよ。 面倒なコーディングをしなくていいので。とりあえず以下にサンプル を付けますがエラー処理を省いています。 #! /usr/local/bin/perl #webサーバ名の取得 ($remotehost) = @ARGV; if ($remotehost eq ''){ $remotehost = 'localhost'; } #ソケットに与えるパラメータの用意 $AF_INET = 2; $SOCK_STREAM = 1; $sockaddr = 'S n a4 x8'; chop($localhost = "localhost"); ($name, $aliases, $proto) = getprotobyname('tcp'); ($name, $aliases, $port) = getservbyname('http', 'tcp'); ($name, $aliases, $type, $len, $thisaddr) = gethostbyname($localhost); ($name, $aliases, $type, $len, $thataddr) = gethostbyname($remotehost); $this = pack($sockaddr, $AF_INET, 0, $thisaddr); $that = pack($sockaddr, $AF_INET, $port, $thataddr); #ソケットの作成と接続 if (socket(S, $AF_INET, $SOCK_STREAM, $proto)){ print "socket ok\n"; } else { die $!; } if (bind(S, $this)){ print "bind ok\n"; } else { die $!; } if (connect(S, $that)){ print "onnect ok\n"; } else { die $!; } #ソケットのフラッシュ select(S); $| = 1; select(STDOUT); # flush S print "GET /index.html\n\n"; print S "GET /index.html\n"; do { $msg = <S>; if(eof(S)){ exit; } print STDERR $msg; } until $msg != "";

select_nao
質問者

お礼

環境に依存するようなモジュールはできるだけ利用したくなかった 為、こういったものを探してました。 ありがとうございました。 無事解決できました!

関連するQ&A

  • LWPモジュールについて教えてください。

    プログラミングは初心者です。 LWPモジュールのサブクラスLWP::Simpleの get()という関数を使いたいです。 現在、Perlは5.005_3を使用しています。 use LWP::Simple; require LWP::Simple; ・ get(URL) と入れると、500 Internal Server Errorと言うものが出てしまいます。 LWPを使うとき、どのようにすれば使えるのかご指導お願いいたします。

    • ベストアンサー
    • Perl
  • main::getのモジュール?

    Perl5.6(Win)を使っております。 Perlで過去にスクリプトを書いたのですが、 Undefined subroutine &main::get called at ./test.pl line 312. とエラーが出たので、 use LWP::Simple;かなと思い。モジュールを追加したのですが まだエラーが表示されます。 main::getと、名前空間まで同じになので、何か細工していたのかな と思っていましたが、思い出せません。 他にどんなモジュールがあるのでしょうか? また、現在インストールしているモジュールの一覧とかわかる方法はありますか?

    • ベストアンサー
    • Perl
  • 使用可能なモジュールの一覧取得

    レンタルサーバ内で、Perlのどんなモジュールが使用可能かどうかを調べたいのですが、一覧で取得する方法はありませんでしょうか? どうぞよろしくお願いします。

    • ベストアンサー
    • Perl
  • モジュールを使わずにhttpアクセスするには

    レンタルサーバ上に置いた perlプログラムで 他サイトのページの内容を httpアクセスして取り出そうと思っています。 サーバの制限がきつくて LWP::Simpleなどのモジュールを全く使えないのですが、 どのようにして httpアクセスをさせればよいのでしょうか。 URLを投げてページの内容をテキストファイルで取り出すという 単純なことができれば充分です。

    • ベストアンサー
    • Perl
  • perlのモジュールについて

    Linuxを使って間もない者です.xamppをLinuxにインストールしたのですが、モジュールの格納場所が違っているせいかうまくCGIスクリプトがうまく実行できません. Linux上でのperlモジュールの格納場所を教えていただけないでしょうか? 以下エラー内容 Can't locate JSON/PP.pm in @INC (@INC contains: /usr/lib/perl5/5.8.6/i386-linux-thread-multi /usr/lib/perl5/5.8.6 /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi 省略・・ /usr/lib/perl5/vendor_perl/5.8.6 //usr/local/lib/site_perl/5.8.2/i386-linux-thread-multi /usr/local/lib/site_perl/5.8.2 /usr/local/lib/site_perl .) at (eval 4) line 3.

  • perlでのクローリングについて

    perlで簡単なクローラーを作ってます。 以前はモジュールにlwpを使っていたのですが今回はSocketを使おうと思っています。 そこで3つ質問があります。 1,lwpが簡単でSocketが難しいと漠然とした知識しかないのですが速度なども変わってくるのでしょうか? 2,lwpでサイズの大きいサイトからデータをとろうとするとCPUの使用率が100%になったりして困っています。何か解決法はありますか? 3,データ取得の速度を上げたいのですが3サイト4サイト同時に取得しにいくことは可能でしょうか? 現在はURLの一覧を読み込んでforでまわすといった形です。 ご教授いただければ幸いです。

    • ベストアンサー
    • Perl
  • LWPで応答データを取得できない

    お世話になります。 perl5でLWPを使用しているのですが、一部のサイトでデータを取得できず困っております。 具体的には my $ua = LWP::UserAgent->new; $ua->agent('Mozilla/5.0'); my $req = HTTP::Request->new(GET => "http://misshiki.blog7.fc2.com/?xml"); my $res = $ua->request($req); my $buf = $res->content; といった感じでRSSを取得したいのですが、$bufが空になってしまいます。 しかし、 $res->as_string とすると、レスポンスヘッダも含めてRSSが取得できていることが確認できます。 また、上記以外のURLでは正常に$res->contentでデータを取得することができています。 どうもFC2ブログのRSSのみの事象のようではあるのですが、対処方法がわからず困っております。 対策をご教授いただければ幸いです。 以上、よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • Data::Dumperモジュールについて

    PerlのData::Dumperモジュールを使えば、データの中身を簡単に見ることができますが、 漢字がユニコード? (\x{30c6}\x{30b9}\x{30c8})なので、WindowsのShift_JISで見づらいのです。 これをShift_JISで表示させる方法はあるのでしょうか?

    • ベストアンサー
    • Perl
  • Perl モジュールのアンインストールの仕方

    ソースからインストールしたPerlモジュールと CPANからインストールしたPerlモジュールの アンインストール方法を探しています。 ■環境 OS:RedHat Linux ES4 Perl:5.8.8 ※perldoc perllocalにインストール履歴が残ります。 インターネットで検索してみますと、Linuxは慣習的に 一度インストールしたものは削除しないように感じます。 自分で、インストールしたファイルをrmコマンドで消していくしかないのでしょうか。

    • ベストアンサー
    • Perl
  • Perlモジュールインストール

    下記環境においてPerlモジュールインストール(perl -MCPAN -e shell) をしているのですが、ftp://ftp.perl.org/pub/CPAN/MIRRORED.BYにつながりません。>^< (FTP(C:\WINNT\system32\ftp.EXE)が問題みたいな応答が出てきます。) 助けてください。 ●環境 Windows2000+ActivePerl 5.6+Apache1.3.27 (~略~) Your ftp_proxy? Your http_proxy? Your no_proxy? You have no C:\USR\Perl\Cpan\sources\MIRRORED.BY I'm trying to fetch one CPAN: LWP::UserAgent loaded ok Fetching with LWP: ftp://ftp.perl.org/pub/CPAN/MIRRORED.BY

    • ベストアンサー
    • Perl