perlで何も考えずにLWPとかでhttpリクエストをたくさん投げると取得すべきURLリストの中にレスポンスの遅いサイトが存在した場合そのリクエストの待ちが発生し後続のリクエストも遅くなります。
httpを簡単にノンブロッキングで実行してくれるライブラリ。複数サイトへ一括リクエストを投げたい場合はpreforkよりも優れたパフォーマンスで実行できる。
#!/usr/bin/env perl use strict; use warnings; use utf8; use AnyEvent; use AnyEvent::HTTP; use Encode; use XML::Simple; my @uri_list = qw{ https://www.google.com }; my $cv = AnyEvent->condvar; for my $uri (@uri_list) { print "HTTP Request => $uri"; $cv->begin; my $guard; $guard = http_get $uri => sub { my ($body, $header) = @_; undef $guard; print($body); # print encode_utf8($res->{channel}->{item}->[0]->{title}); $cv->end; }; } $cv->recv;