|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Maxim Kuchuk 2:5030/1272.54 24 Nov 2001 21:00:26 To : All Subject : http --------------------------------------------------------------------------------
Hарод! Заранее извиняюсь за глупый вопрос, но как из строчки можно вырезать
подстроку типа - 'http://'
Также появилась проблема проверки мёртвой ссылки, попытался решить таким образом
:
$PF_INET = 2;
$AF_INET = 2;
$SOCK_STREAM = 1;
$IPPROTO_TCP = 6;
$sockaddr_in = 'S n a4 x8';
###########################
sub httpget
{
local ($remote,$doc)=@_;
local ($header,$body,$line,$isbody);
local $port=80;
local($thisaddr,$thataddr);
local($this,$that);
local($proto,$hostname);
($thisaddr) = (gethostbyname($hostname))[4];
($thataddr) = (gethostbyname($remote))[4];
$this = pack($sockaddr_in, $PF_INET, 0, $thisaddr);
$that = pack($sockaddr_in, $PF_INET, $port, $thataddr);
socket(SOCK, $PF_INET,$SOCK_STREAM,$IPPROTO_TCP)||return ();
bind(SOCK,$this)||return ();
connect(SOCK,$that)||return ();
select(SOCK);$|=1;select(STDOUT);
print SOCK "GET $doc HTTP/1.1\n\n";
print SOCK "Host: $remote\n";
print SOCK "\n";
while(defined($line=<SOCK>)){
if($isbody){$body.=$line;}
else{
if($line=~/^$/){$isbody=1;}
else{$header.=$line;}
}
}
close (SOCK);
return ($header,$body);
}
sub Is_Url_Good
{
local($URL)=@_;
local($remotehost,$doc);
local($code,$codetext);
($remotehost,$doc)=($URL=~/http:\/\/([^\/]+)(.*)/);
unless($doc){$doc="/";}
($header,$body)=httpget($remotehost,$doc);
unless($header){return 0;}
($code,$codetext)=($header=~/^HTTP\S+\s+(\d+)\s+(.*)/);
if($code!=404){return 0;}
return 1;
}
но ответ приходит 0 на любые ссылки, что мертвые, что живые.
Спасибо за внимание.
Maxim
--- Mike was man... :: mike@fromru.com :: http://allspb.al.ru
* Origin: simple Mike (2:5030/1272.54)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/189403bffd401.html, оценка из 5, голосов 10
|