Я хочу выяснить, как люди будут писать быстрый (маленький), но гибкий HTTP-клиент. Под быстрым я подразумеваю не так много кода (я оставляю вам решать, что это значит), и желательно использовать встроенные функции языка, а не загруженные или пользовательские библиотеки, так что базовые знания программирования сокетов должны быть достаточно, чтобы понять, как работает код. Под гибкостью я подразумеваю, что вы сможете легко манипулировать поступающими данными. Моя собственная версия чего-то вроде этого будет
#!/usr/bin/perl
use Socket;
use HTML::Parse;
socket(SOCKH, PF_INET, SOCK_STREAM, getprotobyname('tcp')) || die $!;
connect(SOCKH,sockaddr_in(80,inet_aton('www.example.com'))) || die $!;
$old_fh = select(SOCKH);
$|=1;
select($old_fh);
print SOCKH "GET / HTTP/1.0\n\n";
while (<SOCKH>) {
$response .= $_;
}
print parse_html($response)->format;
close(<SOCKH>);
Это просто быстрый клиент, который я скоро отредактирую для HTTP / 1.1, или, если у вас есть предложения, как улучшить его для соответствия, пожалуйста, поделитесь!
РЕДАКТИРОВАТЬ: Обновление моего кода с использованием LWP, как предложил Синан Унур:
#!/usr/bin/perl
use LWP::Simple;
use HTML::Parse;
$data = parse_html( get( 'www.example.com' ) )->format;
foreach $line ( $data ) {
print $line; // or any other line-based operation
}