The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
use warnings;
use strict;
use autodie;
use Data::Dumper;
use 5.14.0;
chomp(my $path = qx(perldoc -l perlvar));
my %is_var = map { $_ => "\$$_" } '_', 0 .. 9;
open my $fh, '<', $path;
while (<$fh>) {
    $is_var{$_} = $_ for /X<([\$\@%]\S+?)>/g;
}
close $fh;
for my $key (keys %is_var) {

    # %SIG can also be found as SIG etc. Need at least two word
    # characters; finding '$^H' with 'H' appears a bit too random.
    if ($key =~ /(\w{2,})/) {
        $is_var{$1} = $key;
    }
}
print Data::Dumper->Dump([ \%is_var ], ['*is_var']);