Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: Silencing warnings inside C/XS

by Tanktalus (Canon)
on Oct 10, 2012 at 16:36 UTC ( #998256=note: print w/replies, xml ) Need Help??


in reply to Silencing warnings inside C/XS

First off, just a disclaimer: I run my production code with use warnings FATAL => 'all'; (or an equivalent). A bit of a masochist, I suppose I am.

Now, with that said, how do I deal with valid undefs? I check if they're defined before I use them. So, my recommendation for your XS code? Check if they're defined before you use them ;-) I'm sure there's some sort of SvOK() or something that will tell you this.

Ok, so let's say you want another work around. My experience with just such an annoying undefined message coming from JSON::XS is that you need to say "no warnings 'uninitialized';" outside the function call. So I have code like this:

{ no warnings 'uninitialized'; $text = $json->encode($object); }
That wrapper alluded to by the anonymous monk would work here. But it's not nearly so ugly as that because this is perl, and we can do wonderful things. Wonderful, horrible things. Well, they'd be horrible in other languages, but I use them a lot in perl.
use Sub::Name; for my $f (@wrapper_funcs) { my $xs = $f . 'XS'; *$f = subname $f => sub { no warnings 'uninitialized'; &$xs; # @_ gets passed along automatically }; }
(The "subname $f =>" bit is optional, but can help with backtraces.)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://998256]
help
Chatterbox?
[talexb]: Wow, what hilariously bad form.
[SuicideJunkie]: Just wait; someday soon, you'll be given a DB with unicode emojis in the column names.
[Corion]: marinersk: Well, I have done select statements like select sum(foo) as "Total Amount", ..., but to have a table like that makes me shudder
[Corion]: SuicideJunkie: :-D
[marinersk]: SuicideJunkie LOL
[choroba]: Woohoo! Fixed a test that hasn't run for 3 years.
[marinersk]: Corion Yes, sometimes whitespace in column headers is acceptable, but I still consider it be less than desireable if that query might get revectored for an ETL-esque process...
[marinersk]: choroba++

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (10)
As of 2017-05-25 15:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?