2013-12-23 22 views
0

我想將此shell命令轉換爲perl我正在使用使用WWW: :捲曲::容易;

我想寫一個不同的文件中的詳細信息,我想要將URL內容到不同的文件。到目前爲止,我已經能夠控制URL併爲它添加標題。

現在,我只想寫的shell命令提到從1輸出>到一個文件中,並

2>進入antohter文件,因爲它是有殼

my $curl = WWW::Curl::Easy->new(); 
     $curl->setopt(CURLOPT_HEADER,1); 
     $curl->pushopt(WWW::Curl::Easy::CURLOPT_HTTPHEADER,['AUTH_USER:John']); 
     $curl->setopt(WWW::Curl::Easy::CURLOPT_URL,"www.abc.com"); 
     $curl->setopt(CURLOPT_VERBOSE,1); 

我如何把www.abc.com的內容是

<html> 
<body> 
<marquee>abc is up </marquee> 
</body> 
</html> 

成一個文件

這到另一個文件

> GET/HTTP/1.1 
Host: abc-01 
Accept: */* 
AUTH_USER:hojn 

< HTTP/1.1 200 OK 
...... 

回答

0

documentationlibcurl docs的粗略瀏覽發現,你可能需要:

# A filehandle, reference to a scalar or reference to a typeglob can be used here. 
    my $response_body; 
    $curl->setopt(CURLOPT_WRITEDATA,\$response_body); 

    my $response_header; 
    $curl->setopt(CURLOPT_WRITEHEADER,\$response_header); 
+0

那麼我們在哪裏定義文件句柄? ,假設我們必須寫入/usr/bin/header.txt文件/usr/bin/content.txt中的文件,您在哪裏定義了這個文件? –

+0

您可以像定義任何文件一樣來定義並寫入它。 –

+0

response_body也包含響應頭文件,我只想將html代碼合併到一個文件中,而在另一個文件中使用詳細代碼,但她的響應正文包含正在獲取的完整響應,我只想編寫URL的html代碼我在data.out文件中蜷縮成一個文件 –

0

當使用libcurl的,這是有其documentation方便實用。

通過瀏覽選項,我們發現CURLOPT_HEADERFUNCTION & WRITEHEADERCURLOPT_WRITEFUNCTION & WRITEDATA

use strict; 
use warnings; 

use Net::Curl::Easy qw(/^CURLOPT_/); 

my $url = 'http://stackoverflow.com/'; 

my $easy = Net::Curl::Easy->new(); 

open(my $fh_header, '>:raw', 'header.out') or die $!; 
open(my $fh_data, '>:raw', 'data.out' ) or die $!; 

$easy->setopt(CURLOPT_URL,   $url); 
$easy->setopt(CURLOPT_WRITEHEADER, $fh_header); 
$easy->setopt(CURLOPT_WRITEDATA, $fh_data); 
$easy->perform(); 

注:我用的Net ::包住WWW ::捲曲,因爲我知道和信任它。只要它爲CURLOPT_WRITEFUNCTIONCURLOPT_HEADERFUNCTION提供了一個Perl可識別的默認值,以上也應該適用於WWW :: Curl。它不,你需要爲這些選項提供值。

+0

由於某種原因我的頭文件也被寫入了我只想在data.out中使用html代碼。有任何方法可以做到這一點 –

+0

header.out即將到來,但data.out也包含header.out中的數據 –