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 :)