Devel::PPPort(3)

NAME
Devel::PPPort - Perl/Pollution/Portability

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

DESCRIPTION
Perl 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, typicaly "ppport.h", written by this module attempts to bring some of the newer Perl 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.

Why 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.

Why you should attempt older code to fully use "ppport.h": because the reduced pollution of newer Perl versions is an important thing, 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 gained compatibility and a sense of having done the electronic ecology some good.

How to use ppport.h: Don't direct the user to download "Devel::PPPort", and don't make "ppport.h" optional. Rather, just take the most recent copy of "ppport.h" that you can find (probably in "Devel::PPPort" on CPAN), copy it into your project, adjust your project to use it, and distribute the header along with your module.

"Devel::PPPort" contains a single function, called "WriteFile". It's purpose is to write a 'C' header file that is used when writing XS modules. The file contains a series of macros that allow XS modules to be built using older versions of Perl.

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

  WriteFile
"WriteFile" takes a zero or one parameters. When called with one parameter it expects to be passed a filename. When called with no parameters, it defults to the filename "./pport.h".

The function returns TRUE if the file was written successfully. Otherwise it returns FALSE.

ppport.h
The file written by this module, typically "ppport.h", provides access to the following Perl API if not already available (and in some cases [*] even if available, access to a fixed interface):

    aMY_CXT
    aMY_CXT_
    _aMY_CXT
    aTHX
    aTHX_
    AvFILLp
    boolSV(b)
    call_argv
    call_method
    call_pv
    call_sv
    DEFSV
    dMY_CXT
    dMY_CXT_SV
    dNOOP
    dTHR
    dTHX
    dTHXa
    dTHXoa
    ERRSV
    get_av
    get_cv
    get_hv
    get_sv
    grok_hex
    grok_oct
    grok_bin
    grok_number
    grok_numeric_radix
    gv_stashpvn(str,len,flags)
    INT2PTR(type,int)
    IVdf
    MY_CXT
    MY_CXT_INIT
    newCONSTSUB(stash,name,sv)
    newRV_inc(sv)
    newRV_noinc(sv)
    newSVpvn(data,len)
    NOOP
    NV
    NVef
    NVff
    NVgf
    PERL_REVISION
    PERL_SUBVERSION
    PERL_UNUSED_DECL
    PERL_VERSION
    PL_compiling
    PL_copline
    PL_curcop
    PL_curstash
    PL_defgv
    PL_dirty
    PL_hints
    PL_na
    PL_perldb
    PL_rsfp_filters
    PL_rsfpv
    PL_stdingv
    PL_Sv
    PL_sv_no
    PL_sv_undef
    PL_sv_yes
    pMY_CXT
    pMY_CXT_
    _pMY_CXT
    pTHX
    pTHX_
    PTR2IV(ptr)
    PTR2NV(ptr)
    PTR2ul(ptr)
    PTR2UV(ptr)
    SAVE_DEFSV
    START_MY_CXT
    SvPVbyte(sv,lp) [*]
    UVof
    UVSIZE
    UVuf
    UVxf
    UVXf

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

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

SEE ALSO
See h2xs.