in reply to Cache::Memcached and converting warnings to fatal

AFIK you can't use the warnings pragma to achieve the same, because its, as you already said, doesn't effect other scopes. Even the funny idea to do
# Inside your script: package Cache::Memcached; use warnings FATAL => 'all'; package main; [...]
would help :-)

Just use the handler. This is also mentioned in the perldoc page of eval. Please don't forget to use the local statement to make the handler local to your closure:

my $stats = eval { local $SIG{'__WARN__'} = sub { die }; $memd->stats(); } if ($@) { # No stats!! [...] }
I also would remove the argument to die as long you don't want the warning message, which is now the error message, printed. Normally you do a warn $@ if $@ or similar.