Hey! Apache allows you to authenticate with an LDAP backend.
mod_authnz_ldap - Apache HTTP Server
And you don't need an explicit user specified at all. If you need to, "Require valid-user" will match any users defined in the configuration. Also check that page for information about this and some examples. It seems to me a rather flexible one that the module does not mandate a specific LDAP schema.
If you insist you need to do it the Perl way, or you think you can't live with this method, you'll be required to deploy your Web application on mod_perl instead of Perl CGI because someone at other sites said Apache would not pass the password to the CGI process. I haven't verified this claim so I can't confirm. Upon HTTP authentication, the username+password will always be available in the HTTP header (that's why it works for Apache), but Apache may filter some of them before making them available to the CGI process (as HTTP_* envvars). But it seems that Apache *will* pass the username, that your CGI process can use that retrieved via an envvar to implement your business logic.
Or you deploy it on your own perl-based Web server daemon without Apache. Of course, I don't think it is too practical although theoretically you can do that. It's just the same line of thought as you can write a new OS from scratch but no one will casually do that.