Perl 5 version 8.0 documentation
Devel::PPPort
NAME
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)
- DEFSV
- dMY_CXT
- dMY_CXT_SV
- dNOOP
- dTHR
- dTHX
- dTHXa
- dTHXoa
- ERRSV
- 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_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.