perlのスクリプトでHTTP::Requestを用いGETでHTTPヘッダつき画像データを取得したのですが、ヘッダをきれいに除去する方法が思いつきません。肝心のデータ部に影響を与えることなくHTTPヘッダの部分を切り取るperlスクリプトはどのように書けばよいでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/02/12 20:50:23
  • 終了:--

回答(3件)

id:mi-si No.1

mi-si回答回数207ベストアンサー獲得回数02004/02/12 21:13:44

ポイント23pt

ヘッダと本体の切れ目は¥n¥nなのでここでsplitすれば問題ないのでは?

下は家で使っているHTTPチェック用スクリプトの一部ですけど。(うまく書き込めるかな?)

print S ”GET $URL HTTP/1.0¥n¥n”;

$line = <S>;

$line =~ s/¥r|¥n|¥r¥n|¥n¥r//g;

($var,$code,$mes)=split(/ /,$line,3);

print ”HTTP:$var¥n”;

print ”CODE:$code¥n”;

print ”Get File Success¥n” if $code==200;

print ”MES :$mes¥n”;

while(<S>) { /* Headerの表示 */

s/¥r|¥n|¥r¥n|¥n¥r//g;

last if($_ eq ’’);

print ”$_¥n”;

}

print ”---------------------------------¥n”;

while(<S>) {

print ;/* 本体 */

}

id:ka0007

ありがとうございます。

2004/02/12 21:53:54
id:aki73ix No.2

aki73ix回答回数5224ベストアンサー獲得回数272004/02/12 21:24:04

ポイント23pt

私が作って使ってる奴の本体を取り出す部分です

この前はソケット文です

print S ”GET ”,$file,” HTTP/1.0¥r¥nhost:”,$host,”¥r¥n¥r¥n”;

@que = <S>;

close(S);

$TT=0;

foreach $ax (@que){

if($TT eq 0){

if( $ax gt ’ ’){

if(index($ax,”Content-”) gt -1){

print $ax;

# print qq(¥r);

}

$TT=0;

}

else{

print qq(¥n);

$TT=1;

}

}

else{

print $ax;

}

}

id:ka0007

ありがとうございます。

2004/02/12 21:55:32
id:andymente No.3

andymente回答回数96ベストアンサー獲得回数02004/02/12 23:00:17

ポイント24pt

require HTTP::Request;

require LWP::UserAgent;

$url = ’

’;

# 取得

$ua = LWP::UserAgent->new;

$request = HTTP::Request->new(GET => $url);

$response = $ua->request($request);

$buf = $response->content;

# 表示

binmode STDIN;

print ”Content-type: image/gif;¥n¥n”;

print $buf;

exit;

--

単に Web から取ってきた画像から本体だけ簡単に取り出すなら、これが楽だと思います。

id:ka0007

ありがとうございます。

2004/02/12 23:20:01

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません