$var = ($type)SvPV_nolen($arg) #### if (SvOK($arg)) $var = ($type)SvPV_nolen($arg); else $var = INT2PTR($type,SvIV($arg)) #### INPUT T_PV if (SvOK($arg)) $var = ($type)SvPV_nolen($arg); else $var = INT2PTR($type,SvIV($arg)) #### use strict; use warnings; use Devel::Peek; use Inline C => Config => BUILD_NOISY => 1, # verbose build FORCE_BUILD => 1, # re-build whenever the script is run CLEAN_AFTER_BUILD => 0, # don't clean up the build directory ; use Inline C =><<'EOC'; unsigned char * foo(unsigned char *name) { if(name) printf("name is: %s\n", name); else printf("NULL input (undef) was detected\n"); return(name); } EOC my $x = foo(undef); Dump($x); my $y = foo("hello world"); Dump($y); my $z = foo(''); Dump $z;