in reply to selective warnings

If it's dynamically initialised, then why not...
use warnings; use strict; # Give the compiler an indication the variable may be used use vars qw/$r/; if (!$r){ do something }

A user level that continues to overstate my experience :-))