O módulo Perl Config::General
pode analisar arquivos conf do Apache, então você pode fazer
#!/usr/bin/perl
use strict;
use warnings;
use Config::General;
my %conf = Config::General->new('/path/to/config.conf')->getall();
for my $ip_port (keys %{$conf{VirtualHost}}) {
for my $vh (@{$conf{VirtualHost}{$ip_port}}) {
if (exists $vh->{ServerName} and exists $vh->{ServerAlias}) {
my $aliases = ref $vh->{ServerAlias} eq 'ARRAY'
? join(",", @{$vh->{ServerAlias}})
: $vh->{ServerAlias};
print $ip_port, "\t", $vh->{ServerName}, "\t", $aliases, "\n";
}
}
}