Devel::PPPort

NAME

Devel::PPPort - Perl/Pollution/Portability

SYNOPSIS

Devel::PPPort::WriteFile();   # defaults to ./ppport.h
Devel::PPPort::WriteFile('someheader.h');

# Same as above but retrieve contents rather than write file
my $contents = Devel::PPPort::GetFileContents();
my $contents = Devel::PPPort::GetFileContents('someheader.h');

DESCRIPTION

Perl's API has changed over time, gaining new features, new functions, increasing its flexibility, and reducing the impact on the C namespace environment (reduced pollution). The header file written by this module, typically ppport.h, attempts to bring some of the newer Perl API features to older versions of Perl, so that you can worry less about keeping track of old releases, but users can still reap the benefit.

Devel::PPPort contains two functions, WriteFile and GetFileContents . WriteFile 's only purpose is to write the ppport.h C header file. This file contains a series of macros and, if explicitly requested, functions that allow XS modules to be built using older versions of Perl. Currently, Perl versions from 5.003 to 5.20 are supported.

GetFileContents can be used to retrieve the file contents rather than writing it out.

This module is used by h2xs to write the file ppport.h.

Why use ppport.h?

You should use ppport.h in modern code so that your code will work with the widest range of Perl interpreters possible, without significant additional work.

You should attempt older code to fully use ppport.h, because the reduced pollution of newer Perl versions is an important thing. It's so important that the old polluting ways of original Perl modules will not be supported very far into the future, and your module will almost certainly break! By adapting to it now, you'll gain compatibility and a sense of having done the electronic ecology some good.

How to use ppport.h

Don't direct the users of your module to download Devel::PPPort . They are most probably no XS writers. Also, don't make ppport.h optional. Rather, just take the most recent copy of ppport.h that you can find (e.g. by generating it with the latest Devel::PPPort release from CPAN), copy it into your project, adjust your project to use it, and distribute the header along with your module.

Running ppport.h

But ppport.h is more than just a C header. It's also a Perl script that can check your source code. It will suggest hints and portability notes, and can even make suggestions on how to change your code. You can run it like any other Perl program:

perl ppport.h [options] [files]

It also has embedded documentation, so you can use

perldoc ppport.h

to find out more about how to use it.

FUNCTIONS

WriteFile

WriteFile takes one optional argument. When called with one argument, it expects to be passed a filename. When called with no arguments, it defaults to the filename ppport.h.

The function returns a true value if the file was written successfully. Otherwise it returns a false value.

GetFileContents

GetFileContents behaves like WriteFile above, but returns the contents of the would-be file rather than writing it out.

COMPATIBILITY

ppport.h supports Perl versions from 5.003 to 5.20 in threaded and non-threaded configurations.

Provided Perl compatibility API

The header file written by this module, typically ppport.h, provides access to the following elements of the Perl API that is not available in older Perl releases:

_aMY_CXT
_pMY_CXT
aMY_CXT
aMY_CXT_
aTHX
aTHX_
aTHXR
aTHXR_
AvFILLp
boolSV
call_argv
call_method
call_pv
call_sv
caller_cx
ckWARN
CopFILE
CopFILE_set
CopFILEAV
CopFILEGV
CopFILEGV_set
CopFILESV
CopSTASH
CopSTASH_eq
CopSTASH_set
CopSTASHPV
CopSTASHPV_set
CopyD
CPERLscope
dAX
dAXMARK
DEFSV
DEFSV_set
dITEMS
dMY_CXT
dMY_CXT_SV
dNOOP
dTHR
dTHX
dTHXa
dTHXoa
dTHXR
dUNDERBAR
dVAR
dXCPT
dXSTARG
END_EXTERN_C
ERRSV
eval_pv
eval_sv
EXTERN_C
G_METHOD
get_av
get_cv
get_cvn_flags
get_cvs
get_hv
get_sv
grok_bin
grok_hex
grok_number
GROK_NUMERIC_RADIX
grok_numeric_radix
grok_oct
gv_fetchpvn_flags
gv_fetchpvs
gv_fetchsv
gv_stashpvn
gv_stashpvs
GvSVn
HEf_SVKEY
HeUTF8
hv_fetchs
hv_stores
HvNAME_get
HvNAMELEN_get
IN_LOCALE
IN_LOCALE_COMPILETIME
IN_LOCALE_RUNTIME
IN_PERL_COMPILETIME
INT2PTR
IS_NUMBER_GREATER_THAN_UV_MAX
IS_NUMBER_IN_UV
IS_NUMBER_INFINITY
IS_NUMBER_NAN
IS_NUMBER_NEG
IS_NUMBER_NOT_INT
isALNUMC
isASCII
isBLANK
isCNTRL
isGRAPH
isGV_with_GP
isPRINT
isPSXSPC
isPUNCT
isXDIGIT
IVdf
IVSIZE
IVTYPE
load_module
memEQ
memEQs
memNE
memNEs
mg_findext
MoveD
mPUSHi
mPUSHn
mPUSHp
mPUSHs
mPUSHu
MUTABLE_PTR
MUTABLE_SV
mXPUSHi
mXPUSHn
mXPUSHp
mXPUSHs
mXPUSHu
MY_CXT
MY_CXT_CLONE
MY_CXT_INIT
my_snprintf
my_sprintf
my_strlcat
my_strlcpy
newCONSTSUB
newRV_inc
newRV_noinc
newSV_type
newSVpvn
newSVpvn_flags
newSVpvn_share
newSVpvn_utf8
newSVpvs
newSVpvs_flags
newSVpvs_share
newSVuv
Newx
Newxc
Newxz
NOOP
NUM2PTR
NVef
NVff
NVgf
NVTYPE
packWARN
PERL_ABS
PERL_BCDVERSION
PERL_GCC_BRACE_GROUPS_FORBIDDEN
PERL_HASH
PERL_INT_MAX
PERL_INT_MIN
PERL_LONG_MAX
PERL_LONG_MIN
PERL_MAGIC_arylen
PERL_MAGIC_backref
PERL_MAGIC_bm
PERL_MAGIC_collxfrm
PERL_MAGIC_dbfile
PERL_MAGIC_dbline
PERL_MAGIC_defelem
PERL_MAGIC_env
PERL_MAGIC_envelem
PERL_MAGIC_ext
PERL_MAGIC_fm
PERL_MAGIC_glob
PERL_MAGIC_isa
PERL_MAGIC_isaelem
PERL_MAGIC_mutex
PERL_MAGIC_nkeys
PERL_MAGIC_overload
PERL_MAGIC_overload_elem
PERL_MAGIC_overload_table
PERL_MAGIC_pos
PERL_MAGIC_qr
PERL_MAGIC_regdata
PERL_MAGIC_regdatum
PERL_MAGIC_regex_global
PERL_MAGIC_shared
PERL_MAGIC_shared_scalar
PERL_MAGIC_sig
PERL_MAGIC_sigelem
PERL_MAGIC_substr
PERL_MAGIC_sv
PERL_MAGIC_taint
PERL_MAGIC_tied
PERL_MAGIC_tiedelem
PERL_MAGIC_tiedscalar
PERL_MAGIC_utf8
PERL_MAGIC_uvar
PERL_MAGIC_uvar_elem
PERL_MAGIC_vec
PERL_MAGIC_vstring
PERL_PV_ESCAPE_ALL
PERL_PV_ESCAPE_FIRSTCHAR
PERL_PV_ESCAPE_NOBACKSLASH
PERL_PV_ESCAPE_NOCLEAR
PERL_PV_ESCAPE_QUOTE
PERL_PV_ESCAPE_RE
PERL_PV_ESCAPE_UNI
PERL_PV_ESCAPE_UNI_DETECT
PERL_PV_PRETTY_DUMP
PERL_PV_PRETTY_ELLIPSES
PERL_PV_PRETTY_LTGT
PERL_PV_PRETTY_NOCLEAR
PERL_PV_PRETTY_QUOTE
PERL_PV_PRETTY_REGPROP
PERL_QUAD_MAX
PERL_QUAD_MIN
PERL_REVISION
PERL_SCAN_ALLOW_UNDERSCORES
PERL_SCAN_DISALLOW_PREFIX
PERL_SCAN_GREATER_THAN_UV_MAX
PERL_SCAN_SILENT_ILLDIGIT
PERL_SHORT_MAX
PERL_SHORT_MIN
PERL_SIGNALS_UNSAFE_FLAG
PERL_SUBVERSION
PERL_UCHAR_MAX
PERL_UCHAR_MIN
PERL_UINT_MAX
PERL_UINT_MIN
PERL_ULONG_MAX
PERL_ULONG_MIN
PERL_UNUSED_ARG
PERL_UNUSED_CONTEXT
PERL_UNUSED_DECL
PERL_UNUSED_VAR
PERL_UQUAD_MAX
PERL_UQUAD_MIN
PERL_USE_GCC_BRACE_GROUPS
PERL_USHORT_MAX
PERL_USHORT_MIN
PERL_VERSION
Perl_warner
Perl_warner_nocontext
PERLIO_FUNCS_CAST
PERLIO_FUNCS_DECL
PL_bufend
PL_bufptr
PL_compiling
PL_copline
PL_curcop
PL_curstash
PL_DBsignal
PL_DBsingle
PL_DBsub
PL_DBtrace
PL_debstash
PL_defgv
PL_diehook
PL_dirty
PL_dowarn
PL_errgv
PL_error_count
PL_expect
PL_hexdigit
PL_hints
PL_in_my
PL_in_my_stash
PL_laststatval
PL_lex_state
PL_lex_stuff
PL_linestr
PL_na
PL_no_modify
PL_parser
PL_perl_destruct_level
PL_perldb
PL_ppaddr
PL_rsfp
PL_rsfp_filters
PL_signals
PL_stack_base
PL_stack_sp
PL_statcache
PL_stdingv
PL_Sv
PL_sv_arenaroot
PL_sv_no
PL_sv_undef
PL_sv_yes
PL_tainted
PL_tainting
PL_tokenbuf
pMY_CXT
pMY_CXT_
Poison
PoisonFree
PoisonNew
PoisonWith
pTHX
pTHX_
PTR2IV
PTR2nat
PTR2NV
PTR2ul
PTR2UV
PTRV
PUSHmortal
PUSHu
pv_display
pv_escape
pv_pretty
SAVE_DEFSV
START_EXTERN_C
START_MY_CXT
STMT_END
STMT_START
STR_WITH_LEN
sv_2pv_flags
sv_2pv_nolen
sv_2pvbyte
sv_2pvbyte_nolen
sv_2uv
sv_catpv_mg
sv_catpvf_mg
sv_catpvf_mg_nocontext
sv_catpvn_mg
sv_catpvn_nomg
sv_catpvs
sv_catsv_mg
sv_catsv_nomg
SV_CONST_RETURN
SV_COW_DROP_PV
SV_COW_SHARED_HASH_KEYS
SV_GMAGIC
SV_HAS_TRAILING_NUL
SV_IMMEDIATE_UNREF
sv_magic_portable
SV_MUTABLE_RETURN
SV_NOSTEAL
sv_pvn_force_flags
sv_pvn_nomg
sv_setiv_mg
sv_setnv_mg
sv_setpv_mg
sv_setpvf_mg
sv_setpvf_mg_nocontext
sv_setpvn_mg
sv_setpvs
sv_setsv_mg
sv_setsv_nomg
sv_setuv
sv_setuv_mg
SV_SMAGIC
sv_unmagicext
sv_usepvn_mg
SV_UTF8_NO_ENCODING
sv_uv
sv_vcatpvf
sv_vcatpvf_mg
sv_vsetpvf
sv_vsetpvf_mg
SVf
SVf_UTF8
SVfARG
SvGETMAGIC
SvIV_nomg
SvMAGIC_set
SvPV_const
SvPV_flags
SvPV_flags_const
SvPV_flags_const_nolen
SvPV_flags_mutable
SvPV_force
SvPV_force_flags
SvPV_force_flags_mutable
SvPV_force_flags_nolen
SvPV_force_mutable
SvPV_force_nolen
SvPV_force_nomg
SvPV_force_nomg_nolen
SvPV_mutable
SvPV_nolen
SvPV_nolen_const
SvPV_nomg
SvPV_nomg_const
SvPV_nomg_const_nolen
SvPV_nomg_nolen
SvPV_renew
SvPVbyte
SvPVX_const
SvPVX_mutable
SvREFCNT_inc
SvREFCNT_inc_NN
SvREFCNT_inc_simple
SvREFCNT_inc_simple_NN
SvREFCNT_inc_simple_void
SvREFCNT_inc_simple_void_NN
SvREFCNT_inc_void
SvREFCNT_inc_void_NN
SvRV_set
SvSHARED_HASH
SvSTASH_set
SvUOK
SvUV
SvUV_nomg
SvUV_set
SvUVX
SvUVx
SvUVXx
SvVSTRING_mg
UNDERBAR
UTF8_MAXBYTES
UVof
UVSIZE
UVTYPE
UVuf
UVXf
UVxf
vload_module
vnewSVpvf
WARN_ALL
WARN_AMBIGUOUS
WARN_ASSERTIONS
WARN_BAREWORD
WARN_CLOSED
WARN_CLOSURE
WARN_DEBUGGING
WARN_DEPRECATED
WARN_DIGIT
WARN_EXEC
WARN_EXITING
WARN_GLOB
WARN_INPLACE
WARN_INTERNAL
WARN_IO
WARN_LAYER
WARN_MALLOC
WARN_MISC
WARN_NEWLINE
WARN_NUMERIC
WARN_ONCE
WARN_OVERFLOW
WARN_PACK
WARN_PARENTHESIS
WARN_PIPE
WARN_PORTABLE
WARN_PRECEDENCE
WARN_PRINTF
WARN_PROTOTYPE
WARN_QW
WARN_RECURSION
WARN_REDEFINE
WARN_REGEXP
WARN_RESERVED
WARN_SEMICOLON
WARN_SEVERE
WARN_SIGNAL
WARN_SUBSTR
WARN_SYNTAX
WARN_TAINT
WARN_THREADS
WARN_UNINITIALIZED
WARN_UNOPENED
WARN_UNPACK
WARN_UNTIE
WARN_UTF8
WARN_VOID
warner
WIDEST_UTYPE
XCPT_CATCH
XCPT_RETHROW
XCPT_TRY_END
XCPT_TRY_START
XPUSHmortal
XPUSHu
XSprePUSH
XSPROTO
XSRETURN
XSRETURN_UV
XST_mUV
ZeroD

Perl API not supported by ppport.h

There is still a big part of the API not supported by ppport.h. Either because it doesn't make sense to back-port that part of the API, or simply because it hasn't been implemented yet. Patches welcome!

Here's a list of the currently unsupported API, and also the version of Perl below which it is unsupported:

  • perl 5.21.8
    BhkDISABLE
    BhkENABLE
    BhkENTRY_set
    MULTICALL
    PERL_SYS_TERM
    POP_MULTICALL
    PUSH_MULTICALL
    PadARRAY
    PadMAX
    PadlistARRAY
    PadlistMAX
    PadlistNAMES
    PadlistNAMESARRAY
    PadlistNAMESMAX
    PadnameLEN
    PadnamePV
    PadnameREFCNT
    PadnameREFCNT_dec
    PadnameSV
    PadnamelistARRAY
    PadnamelistMAX
    PadnamelistREFCNT
    PadnamelistREFCNT_dec
    XS_APIVERSION_BOOTCHECK
    XS_EXTERNAL
    XS_INTERNAL
    XS_VERSION_BOOTCHECK
    XopDISABLE
    XopENABLE
    XopENTRY
    XopENTRYCUSTOM
    XopENTRY_set
    cophh_new_empty
    my_lstat
    my_stat
    reentrant_free
    reentrant_init
    reentrant_retry
    reentrant_size
    ref
    sv_get_backrefs
    sv_setref_pvs
    
  • perl 5.21.7
    OpHAS_SIBLING
    OpSIBLING
    OpSIBLING_set
    PadnameUTF8
    is_invariant_string
    newPADNAMELIST
    newPADNAMEouter
    newPADNAMEpvn
    newUNOP_AUX
    padnamelist_fetch
    padnamelist_store
    
  • perl 5.21.6
    newDEFSVOP
    op_convert_list
    
  • perl 5.21.5
    cv_name
    newMETHOP
    newMETHOP_named
    
  • perl 5.21.4
    cv_set_call_checker_flags
    grok_infnan
    isinfnan
    sync_locale
    
  • perl 5.21.2
    grok_number_flags
    op_parent
    op_sibling_splice
    
  • perl 5.21.1
    _is_in_locale_category
    _is_utf8_char_slow
    _is_utf8_idcont
    _is_utf8_idstart
    _is_utf8_xidcont
    _is_utf8_xidstart
    isALNUM_lazy
    isIDFIRST_lazy
    isUTF8_CHAR
    markstack_grow
    my_strerror
    
  • perl 5.19.10
    OP_TYPE_IS_OR_WAS
    
  • perl 5.19.9
    _to_utf8_fold_flags
    _to_utf8_lower_flags
    _to_utf8_title_flags
    _to_utf8_upper_flags
    
  • perl 5.19.7
    OP_TYPE_IS
    
  • perl 5.19.4
    append_utf8_from_native_byte
    is_safe_syscall
    uvoffuni_to_utf8_flags
    
  • perl 5.19.3
    croak_memory_wrap
    sv_pos_b2u_flags
    
  • perl 5.19.2
    SVt_INVLIST
    
  • perl 5.19.1
    re_intuit_start
    toFOLD
    toFOLD_utf8
    toLOWER_L1
    toTITLE
    
  • perl 5.18.0
    hv_rand_set
    
  • perl 5.17.9
    av_tindex
    av_top_index
    
  • perl 5.17.8
    _is_uni_FOO
    _is_uni_perl_idcont
    _is_utf8_FOO
    _is_utf8_mark
    _is_utf8_perl_idcont
    isALPHANUMERIC
    isIDCONT
    
  • perl 5.17.7
    SvREFCNT_dec_NN
    _is_uni_perl_idstart
    _is_utf8_perl_idstart
    is_uni_alnumc
    is_uni_alnumc_lc
    is_utf8_alnumc
    
  • perl 5.17.6
    READ_XDIGIT
    
  • perl 5.17.4
    PL_comppad_name
    PadlistREFCNT
    newMYSUB
    newSVpadname
    
  • perl 5.17.2
    is_uni_blank
    is_uni_blank_lc
    is_utf8_blank
    sv_copypv_flags
    sv_copypv_nomg
    sv_vcatpvfn_flags
    
  • perl 5.15.9
    utf8_to_uvchr_buf
    utf8_to_uvuni_buf
    valid_utf8_to_uvchr
    valid_utf8_to_uvuni
    
  • perl 5.15.8
    is_utf8_char_buf
    wrap_op_checker
    
  • perl 5.15.7
    toLOWER_utf8
    toTITLE_utf8
    toUPPER_utf8
    to_utf8_fold
    to_utf8_lower
    to_utf8_title
    to_utf8_upper
    
  • perl 5.15.6
    newCONSTSUB_flags
    
  • perl 5.15.4
    HvENAMELEN
    HvENAMEUTF8
    HvNAMELEN
    HvNAMEUTF8
    gv_autoload_pv
    gv_autoload_pvn
    gv_autoload_sv
    gv_fetchmeth_pv
    gv_fetchmeth_pv_autoload
    gv_fetchmeth_pvn
    gv_fetchmeth_pvn_autoload
    gv_fetchmeth_sv
    gv_fetchmeth_sv_autoload
    gv_fetchmethod_pv_flags
    gv_fetchmethod_pvn_flags
    gv_fetchmethod_sv_flags
    gv_init_pv
    gv_init_pvn
    gv_init_sv
    newGVgen_flags
    sv_derived_from_pv
    sv_derived_from_pvn
    sv_derived_from_sv
    sv_does_pv
    sv_does_pvn
    sv_does_sv
    whichsig_pv
    whichsig_pvn
    whichsig_sv
    
  • perl 5.15.1
    cop_fetch_label
    cop_store_label
    pad_add_name_pv
    pad_add_name_pvn
    pad_add_name_pvs
    pad_add_name_sv
    pad_findmy_pv
    pad_findmy_pvn
    pad_findmy_pvs
    pad_findmy_sv
    
  • perl 5.14.0
    _to_uni_fold_flags
    
  • perl 5.13.10
    foldEQ_utf8_flags
    is_utf8_xidcont
    is_utf8_xidfirst
    
  • perl 5.13.8
    foldEQ_latin1
    parse_arithexpr
    parse_fullexpr
    parse_listexpr
    parse_termexpr
    
  • perl 5.13.7
    HvENAME
    OP_CLASS
    XopFLAGS
    amagic_deref_call
    bytes_cmp_utf8
    cop_hints_2hv
    cop_hints_fetch_pv
    cop_hints_fetch_pvn
    cop_hints_fetch_pvs
    cop_hints_fetch_sv
    cophh_2hv
    cophh_copy
    cophh_delete_pv
    cophh_delete_pvn
    cophh_delete_pvs
    cophh_delete_sv
    cophh_fetch_pv
    cophh_fetch_pvn
    cophh_fetch_pvs
    cophh_fetch_sv
    cophh_free
    cophh_store_pv
    cophh_store_pvn
    cophh_store_pvs
    cophh_store_sv
    custom_op_register
    custom_op_xop
    newFOROP
    newWHILEOP
    op_lvalue
    op_scope
    parse_barestmt
    parse_block
    parse_label
    
  • perl 5.13.6
    LINKLIST
    SvTRUE_nomg
    ck_entersub_args_list
    ck_entersub_args_proto
    ck_entersub_args_proto_or_list
    cv_get_call_checker
    cv_set_call_checker
    isWORDCHAR
    lex_stuff_pv
    mg_free_type
    newSVpv_share
    op_append_elem
    op_append_list
    op_contextualize
    op_linklist
    op_prepend_elem
    parse_stmtseq
    rv2cv_op_cv
    savesharedpvs
    savesharedsvpv
    sv_2bool_flags
    sv_catpv_flags
    sv_catpv_nomg
    sv_catpvs_flags
    sv_catpvs_mg
    sv_catpvs_nomg
    sv_cmp_flags
    sv_cmp_locale_flags
    sv_collxfrm_flags
    sv_eq_flags
    sv_setpvs_mg
    
  • perl 5.13.5
    PL_rpeepp
    isOCTAL
    lex_stuff_pvs
    parse_fullstmt
    
  • perl 5.13.3
    blockhook_register
    croak_no_modify
    
  • perl 5.13.2
    SvNV_nomg
    find_rundefsv
    foldEQ
    foldEQ_locale
    foldEQ_utf8
    hv_fill
    sv_dec_nomg
    sv_inc_nomg
    
  • perl 5.13.1
    croak_sv
    die_sv
    mess_sv
    sv_2nv_flags
    warn_sv
    
  • perl 5.11.5
    sv_pos_u2b_flags
    
  • perl 5.11.4
    prescan_version
    
  • perl 5.11.2
    PL_keyword_plugin
    lex_bufutf8
    lex_discard_to
    lex_grow_linestr
    lex_next_chunk
    lex_peek_unichar
    lex_read_space
    lex_read_to
    lex_read_unichar
    lex_stuff_pvn
    lex_stuff_sv
    lex_unstuff
    
  • perl 5.11.1
    ck_warner
    ck_warner_d
    is_utf8_perl_space
    is_utf8_perl_word
    is_utf8_posix_digit
    
  • perl 5.11.0
    Gv_AMupdate
    PL_opfreehook
    SVt_REGEXP
    SvOOK_offset
    av_iter_p
    gv_add_by_type
    is_ascii_string
    pregfree2
    save_adelete
    save_aelem_flags
    save_hdelete
    save_helem_flags
    sv_utf8_upgrade_flags_grow
    
  • perl 5.10.1
    croak_xs_usage
    mro_get_from_name
    mro_get_private_data
    mro_register
    mro_set_mro
    mro_set_private_data
    save_hints
    save_padsv_and_mortalize
    save_pushi32ptr
    save_pushptr
    save_pushptrptr
    sv_insert_flags
    
  • perl 5.10.0
    hv_common
    hv_common_key_len
    sv_destroyable
    sys_init
    sys_init3
    sys_term
    
  • perl 5.9.5
    Perl_signbit
    SvRX
    SvRXOK
    av_create_and_push
    av_create_and_unshift_one
    gv_fetchfile_flags
    lex_start
    mro_get_linear_isa
    mro_method_changed_in
    my_dirfd
    pregcomp
    ptr_table_clear
    ptr_table_fetch
    ptr_table_free
    ptr_table_new
    ptr_table_split
    ptr_table_store
    re_compile
    reg_named_buff_all
    reg_named_buff_exists
    reg_named_buff_fetch
    reg_named_buff_firstkey
    reg_named_buff_nextkey
    reg_named_buff_scalar
    regfree_internal
    savesharedpvn
    scan_vstring
    upg_version
    
  • perl 5.9.4
    PerlIO_context_layers
    gv_name_set
    hv_copy_hints_hv
    my_vsnprintf
    newXS_flags
    regclass_swash
    sv_does
    sv_usepvn_flags
    
  • perl 5.9.3
    av_arylen_p
    ckwarn
    ckwarn_d
    csighandler
    dMULTICALL
    doref
    gv_const_sv
    hv_eiter_p
    hv_eiter_set
    hv_name_set
    hv_placeholders_get
    hv_placeholders_set
    hv_riter_p
    hv_riter_set
    is_utf8_string_loclen
    newGIVENOP
    newSVhek
    newWHENOP
    pad_compname_type
    savepvs
    sortsv_flags
    vverify
    
  • perl 5.9.2
    SvPVbyte_force
    find_rundefsvoffset
    op_refcnt_lock
    op_refcnt_unlock
    savesvpv
    vnormal
    
  • perl 5.9.1
    hv_clear_placeholders
    hv_scalar
    scan_version
    sv_2iv_flags
    sv_2uv_flags
    
  • perl 5.9.0
    new_version
    save_set_svflags
    vcmp
    vnumify
    vstringify
    
  • perl 5.8.3
    SvIsCOW
    SvIsCOW_shared_hash
    
  • perl 5.8.1
    CvPADLIST
    PL_comppad
    SvVOK
    doing_taint
    find_runcv
    is_utf8_string_loc
    packlist
    pad_add_anon
    pad_new
    pad_tidy
    save_bool
    savestack_grow_cnt
    seed
    sv_cat_decode
    sv_setpviv
    sv_setpviv_mg
    unpackstring
    
  • perl 5.8.0
    HeUTF8
    hv_iternext_flags
    hv_store_flags
    is_utf8_idcont
    nothreadhook
    
  • perl 5.7.3
    OP_DESC
    OP_NAME
    PL_peepp
    PerlIO_clearerr
    PerlIO_close
    PerlIO_eof
    PerlIO_error
    PerlIO_fileno
    PerlIO_fill
    PerlIO_flush
    PerlIO_get_base
    PerlIO_get_bufsiz
    PerlIO_get_cnt
    PerlIO_get_ptr
    PerlIO_read
    PerlIO_seek
    PerlIO_set_cnt
    PerlIO_set_ptrcnt
    PerlIO_setlinebuf
    PerlIO_stderr
    PerlIO_stdin
    PerlIO_stdout
    PerlIO_tell
    PerlIO_unread
    PerlIO_write
    SvLOCK
    SvSHARE
    SvUNLOCK
    atfork_lock
    atfork_unlock
    custom_op_desc
    custom_op_name
    deb
    debstack
    debstackptrs
    gv_fetchmeth_autoload
    ibcmp_utf8
    my_fork
    my_socketpair
    pack_cat
    perl_destruct
    pv_uni_display
    save_shared_pvref
    savesharedpv
    sortsv
    sv_magicext
    sv_nolocking
    sv_nosharing
    sv_recode_to_utf8
    sv_uni_display
    toFOLD_uni
    toLOWER_uni
    toTITLE_uni
    toUPPER_uni
    to_uni_fold
    to_uni_lower
    to_uni_title
    to_uni_upper
    to_utf8_case
    unpack_str
    uvchr_to_utf8_flags
    uvuni_to_utf8_flags
    vdeb
    
  • perl 5.7.2
    calloc
    getcwd_sv
    init_tm
    malloc
    mfree
    mini_mktime
    my_atof2
    my_strftime
    op_null
    realloc
    sv_catpvn_flags
    sv_catsv_flags
    sv_setsv_flags
    sv_utf8_upgrade_flags
    sv_utf8_upgrade_nomg
    swash_fetch
    
  • perl 5.7.1
    ASCII_TO_NEED
    NATIVE_TO_NEED
    POPpbytex
    bytes_from_utf8
    despatch_signals
    do_openn
    gv_handler
    is_lvalue_sub
    my_popen_list
    save_mortalizesv
    scan_num
    sv_force_normal_flags
    sv_setref_uv
    sv_unref_flags
    sv_utf8_upgrade
    utf8_length
    utf8_to_uvchr
    utf8_to_uvuni
    utf8n_to_uvchr
    utf8n_to_uvuni
    uvchr_to_utf8
    uvuni_to_utf8
    
  • perl 5.6.1
    SvGAMAGIC
    apply_attrs_string
    bytes_to_utf8
    gv_efullname4
    gv_fullname4
    is_utf8_string
    save_generic_pvref
    utf16_to_utf8
    utf16_to_utf8_reversed
    utf8_to_bytes
    
  • perl 5.6.0
    PERL_SYS_INIT3
    PL_check
    SvIOK_UV
    SvIOK_notUV
    SvIOK_only_UV
    SvPOK_only_UTF8
    SvPVbyte_nolen
    SvPVbytex
    SvPVbytex_force
    SvPVutf8
    SvPVutf8_force
    SvPVutf8_nolen
    SvPVutf8x
    SvPVutf8x_force
    SvUOK
    SvUTF8
    SvUTF8_off
    SvUTF8_on
    av_delete
    av_exists
    call_atexit
    caller_cx
    cast_i32
    cast_iv
    cast_ulong
    cast_uv
    do_gv_dump
    do_gvgv_dump
    do_hv_dump
    do_magic_dump
    do_op_dump
    do_open9
    do_pmop_dump
    do_sv_dump
    dump_all
    dump_eval
    dump_form
    dump_indent
    dump_packsubs
    dump_sub
    dump_vindent
    get_context
    get_ppaddr
    gv_dump
    init_i18nl10n
    init_i18nl14n
    is_uni_alnum
    is_uni_alnum_lc
    is_uni_alpha
    is_uni_alpha_lc
    is_uni_ascii
    is_uni_ascii_lc
    is_uni_cntrl
    is_uni_cntrl_lc
    is_uni_digit
    is_uni_digit_lc
    is_uni_graph
    is_uni_graph_lc
    is_uni_idfirst
    is_uni_idfirst_lc
    is_uni_lower
    is_uni_lower_lc
    is_uni_print
    is_uni_print_lc
    is_uni_punct
    is_uni_punct_lc
    is_uni_space
    is_uni_space_lc
    is_uni_upper
    is_uni_upper_lc
    is_uni_xdigit
    is_uni_xdigit_lc
    is_utf8_alnum
    is_utf8_alpha
    is_utf8_ascii
    is_utf8_char
    is_utf8_cntrl
    is_utf8_digit
    is_utf8_graph
    is_utf8_idfirst
    is_utf8_lower
    is_utf8_mark
    is_utf8_print
    is_utf8_punct
    is_utf8_space
    is_utf8_upper
    is_utf8_xdigit
    magic_dump
    mess
    my_atof
    my_fflush_all
    newANONATTRSUB
    newATTRSUB
    newXS
    newXSproto
    new_collate
    new_ctype
    new_numeric
    op_dump
    perl_parse
    pmop_dump
    re_intuit_string
    reginitcolors
    require_pv
    safesyscalloc
    safesysfree
    safesysmalloc
    safesysrealloc
    save_I8
    save_alloc
    save_destructor
    save_destructor_x
    save_re_context
    save_vptr
    scan_bin
    set_context
    set_numeric_local
    set_numeric_radix
    set_numeric_standard
    str_to_version
    sv_2pvutf8
    sv_2pvutf8_nolen
    sv_force_normal
    sv_len_utf8
    sv_pos_b2u
    sv_pos_u2b
    sv_pv
    sv_pvbyte
    sv_pvbyten
    sv_pvbyten_force
    sv_pvutf8
    sv_pvutf8n
    sv_pvutf8n_force
    sv_rvweaken
    sv_utf8_decode
    sv_utf8_downgrade
    sv_utf8_encode
    swash_init
    to_uni_lower_lc
    to_uni_title_lc
    to_uni_upper_lc
    utf8_distance
    utf8_hop
    vcroak
    vform
    vmess
    vwarn
    vwarner
    
  • perl 5.005_03
    POPpx
    get_vtbl
    save_generic_svref
    
  • perl 5.005
    PL_curpad
    PL_modglobal
    cx_dump
    debop
    debprofdump
    fbm_compile
    fbm_instr
    get_op_descs
    get_op_names
    init_stacks
    mg_length
    mg_size
    newHVhv
    new_stackinfo
    regdump
    regexec_flags
    regnext
    runops_debug
    runops_standard
    save_iv
    save_op
    sv_iv
    sv_nv
    sv_peek
    sv_pvn
    sv_pvn_nomg
    sv_true
    
  • perl 5.004_05
    CopyD
    MoveD
    do_binmode
    save_aelem
    save_helem
    
  • perl 5.004
    GIMME_V
    G_VOID
    HePV
    HeSVKEY_set
    SvSetMagicSV
    SvSetMagicSV_nosteal
    SvSetSV_nosteal
    SvTAINTED
    SvTAINTED_off
    SvTAINTED_on
    block_end
    block_gimme
    block_start
    call_list
    delimcpy
    form
    gv_autoload4
    gv_fetchmethod_autoload
    hv_delayfree_ent
    hv_free_ent
    ibcmp_locale
    intro_my
    my_failure_exit
    newSVpvf
    rsignal
    rsignal_state
    save_I16
    save_gp
    share_hek
    start_subparse
    sv_catpvf
    sv_catpvf_mg
    sv_cmp_locale
    sv_derived_from
    sv_magic_portable
    sv_setpvf
    sv_setpvf_mg
    sv_taint
    sv_tainted
    sv_untaint
    sv_vcatpvf
    sv_vcatpvf_mg
    sv_vcatpvfn
    sv_vsetpvf
    sv_vsetpvf_mg
    sv_vsetpvfn
    toLOWER_LC
    vnewSVpvf
    warner
    
  • perl 5.003_07
    HeHASH
    HeKEY
    HeKLEN
    HeSVKEY
    HeSVKEY_force
    HeVAL
    cv_const_sv
    do_open
    gv_efullname3
    gv_fullname3
    hv_delete_ent
    hv_exists_ent
    hv_fetch_ent
    hv_iterkeysv
    hv_ksplit
    hv_store_ent
    my_pclose
    my_popen
    sv_gets
    unsharepvn
    

BUGS

If you find any bugs, Devel::PPPort doesn't seem to build on your system, or any of its tests fail, please file an issue here: https://github.com/mhx/Devel-PPPort/issues/

AUTHORS

  • Version 1.x of Devel::PPPort was written by Kenneth Albanowski.

  • Version 2.x was ported to the Perl core by Paul Marquess.

  • Version 3.x was ported back to CPAN by Marcus Holland-Moritz.

  • Versions >= 3.22 are maintained with support from Matthew Horsfall (alh).

Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.

Version 2.x, Copyright (C) 2001, Paul Marquess.

Version 1.x, Copyright (C) 1999, Kenneth Albanowski.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

See h2xs, ppport.h.

© 1993–2016 Larry Wall and others
Licensed under the GNU General Public License version 1 or later, or the Artistic License.
The Perl logo is a trademark of the Perl Foundation.
https://perldoc.perl.org/5.22.0/Devel/PPPort.html