A while ago I wrote an article on LWP::UserAgent and Basic Authentication and posted it on Reddit as well, where a user pointed to an even simpler solution, one that I did not find in the documentation myself. It uses LWP::UserAgent and HTTP::Request::Common which is a dependency of LWP::UserAgent anyway.

(Actually, I think I saw and used this or a similar solution a few years ago, but I did not remember or could not find it again when I wrote the previous article. Now I seem to recall there was an issue with this solution when the request redirected to another URL that requred Basic Authentication, but I am not entirly sure. The point is that I think this solution works in most of the cases, but in the rare special cases you might still need the other solution.)

examples/basic_authentication.pl

use strict;
use warnings;
use v5.10;
use LWP::UserAgent;
use HTTP::Request::Common;

my $ua = LWP::UserAgent->new();
my $request = GET 'https://pause.perl.org/pause/authenquery';

$request->authorization_basic('szabgab', '*******');

my $response = $ua->request($request);
say $response->as_string();

Debugging the script

If you have problems running the script, there are some nice techniques to make UserAgent Debugging Easy.

Comments

This line doesn't look right!

my $request = GET 'https://pause.perl.org/pause/authenquery';

Don't we need something like this?

my $request = HTTP::Request->new( GET => 'https://pause.perl.org/pause/authenquery');

---

This works too - and looks better :)