Acme-Ref

 view release on metacpan or  search on metacpan

Ref.xs  view on Meta::CPAN


SV *
_deref(int ref)
    CODE:
        if (ref) {
            SV *r = (SV *) ref;
            if (SvTYPE(r)>0) {
                RETVAL = newRV_inc(r);
            }
            else {
                RETVAL = &PL_sv_undef;
            }
        }
        else {
            RETVAL = &PL_sv_undef;
        }
    OUTPUT:
        RETVAL

ppport.h  view on Meta::CPAN

#	define PL_defgv		defgv
#	define PL_dirty		dirty
#	define PL_dowarn	dowarn
#	define PL_hints		hints
#	define PL_na		na
#	define PL_perldb	perldb
#	define PL_rsfp_filters	rsfp_filters
#	define PL_rsfpv		rsfp
#	define PL_stdingv	stdingv
#	define PL_sv_no		sv_no
#	define PL_sv_undef	sv_undef
#	define PL_sv_yes	sv_yes
/* Replace: 0 */
#endif

#ifdef HASATTRIBUTE
#  if defined(__GNUC__) && defined(__cplusplus)
#    define PERL_UNUSED_DECL
#  else
#    define PERL_UNUSED_DECL __attribute__((unused))
#  endif

ppport.h  view on Meta::CPAN

#   endif
#endif

#ifndef AvFILLp			/* Older perls (<=5.003) lack AvFILLp */
#   define AvFILLp AvFILL
#endif

#ifdef SvPVbyte
#   if PERL_REVISION == 5 && PERL_VERSION < 7
       /* SvPVbyte does not work in perl-5.6.1, borrowed version for 5.7.3 */
#       undef SvPVbyte
#       define SvPVbyte(sv, lp) \
          ((SvFLAGS(sv) & (SVf_POK|SVf_UTF8)) == (SVf_POK) \
           ? ((lp = SvCUR(sv)), SvPVX(sv)) : my_sv_2pvbyte(aTHX_ sv, &lp))
       static char *
       my_sv_2pvbyte(pTHX_ register SV *sv, STRLEN *lp)
       {   
           sv_utf8_downgrade(sv,0);
           return SvPV(sv,*lp);
       }
#   endif

ref.pl  view on Meta::CPAN

#!/usr/bin/perl -w

use strict;
use Acme::Ref qw/deref/;

my $h = { yomomma => q!so fat! };

print deref("$h")->{yomomma};

my $val = deref("HASH(0x0)");
# doesnt die, returns undef




( run in 1.568 second using v1.01-cache-2.11-cpan-d80b1682f3f )