http://www.perlmonks.org?node_id=999842


in reply to Http Clients errors from LWP::Protocol::http after module upgrade

Hi tharple,

that's a very strange error.

In what situation can the 1st predicate pass when $wbits is undef?
Or why would && not short circuit correctly?
I can't think of any at all, that would make both the defined() test and && pretty pointless. What's more, line line doesn't match the error message. If something made defined() pass an undefined value, I'd have expected "Use of uninitialized value $fbits in pattern match (m//)", however the error speaks of "SCALAR reference" as if some dereferencing was going on there, which there isn't. Perl 5.14+ does some automatic dereferencing in some situations but with 5.12 that shouldn't be the case either. Frankly I don't have a clue. Perhaps something is screwing¹ with your compiled code. I'd try and split up that condition to see what exactly is acting up:
if (defined($wbits)) { print "\$wbits is defined: ",Dumper($wbits); if($wbits =~ /[^\0]/) { print "\$wbits matched\n"; ... } else { print "\$wbits did not match\n"; } }
¹ To whom it may concern: non-sexual readings preferred here