Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
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?
choroba waits
[thepkd]: $aohoaoh ->{'foo'} has to be dereferenced to access its contents right?
[thepkd]: sorry. i mean $aohoaoh[0]
[GotToBTru]: $aohoaoh is an array reference tho
[thepkd]: some guy was suggesting $aohoaoh[0]->{'foo '}[0]->{}. This wouldnt work.
[GotToBTru]: you're mixing notation there I think

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (10)
As of 2016-12-06 13:33 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:













    Results (104 votes). Check out past polls.