HTTP::Requestを使う

use strict;
use warnings;
use HTTP::Request::Common;
use LWP::UserAgent;

my $name = "YOURNAME";
my $pass = "YOURPASS";

my $ua = LWP::UserAgent->new;
my $req = HTTP::Request::Common::POST(
    "http://YOURDOMAIN/test/test.php",
    [
     foo => 'bar',
    ]
    );
$req->authorization_basic($name, $pass);
my $res = $ua->request($req);
die $res->status_line if $res->is_error;

print $res->decoded_content;

HTTPプロトコルをよく理解できていないとアカンとつくづく思う。「perldoc -l HTTP::Request」でソースの位置を確認し、cdするその後に「grep -rn "^sub" * | wc -l」でHTTP以下のメソッドをご確認すると237個もありました。authorization_basicはHeaders.pmの中にある。

下記はLWP::UserAgentのcredentialメソッドを使った場合。realmというのは.htaccessに書いた「AuthName」の部分。$resはHTTP::Responseが入ってくる。よくよく考えるとHTTP::Requestのauthorization_basicメソッドがHeaders.pmにあるのは当然ということが理解できた。

use strict;
use warnings;
use LWP::UserAgent;

my $ua = LWP::UserAgent->new;
my $realm = 'YOUR AuthName';

$ua->credentials("localhost:80", $realm, 'ID', 'PASS');
my $res = $ua->post("http://localhost/foo/bar", [foo => 'yes']);
print $res->decoded_content;
#print ref $res;