in reply to Perl is psychic?!

Yes, Perl is psychic... but not in this case. If you look at perlvar you will see:

 $&      The string matched by the last successful pattern
               match (not counting any matches hidden within a
               BLOCK or eval() enclosed by the current BLOCK).
               (Mnemonic: like & in some editors.)  This variable
               is read-only and dynamically scoped to the current

So, since .* matched 'foo', $& is set when you use it. If you make your pattern /\d.*/ you will find you will get no output in your same test case.

# cat
'foo' =~ m/\d.*/;
print eval <STDIN>;
# perl