in reply to Style question on conditional return statements:
They're not the same, so it's not just a style issue. The first returns 1 or undef, the second returns whatever is_writable returns, and the third returns 1 or 0.
It looks like you're trying to do a "call-thru", in which case I'd probably use the second one, or better still, use Method::Alias:
use Method::Alias 'is_connected' => 'is_writable';