.\" Automatically generated by Pod::Man 4.07 (Pod::Simple 3.32) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .if !\nF .nr F 0 .if \nF>0 \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} .\} .\" ======================================================================== .\" .IX Title "Devel::PPPort 3perl" .TH Devel::PPPort 3perl "2018-11-29" "perl v5.24.1" "Perl Programmers Reference Guide" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Devel::PPPort \- Perl/Pollution/Portability .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 2 \& Devel::PPPort::WriteFile(); # defaults to ./ppport.h \& Devel::PPPort::WriteFile(\*(Aqsomeheader.h\*(Aq); \& \& # Same as above but retrieve contents rather than write file \& my $contents = Devel::PPPort::GetFileContents(); \& my $contents = Devel::PPPort::GetFileContents(\*(Aqsomeheader.h\*(Aq); .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" Perl's \s-1API\s0 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 \fIppport.h\fR, attempts to bring some of the newer Perl \s-1API\s0 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. .PP \&\f(CW\*(C`Devel::PPPort\*(C'\fR contains two functions, \f(CW\*(C`WriteFile\*(C'\fR and \f(CW\*(C`GetFileContents\*(C'\fR. \&\f(CW\*(C`WriteFile\*(C'\fR's only purpose is to write the \fIppport.h\fR C header file. This file contains a series of macros and, if explicitly requested, functions that allow \s-1XS\s0 modules to be built using older versions of Perl. Currently, Perl versions from 5.003 to 5.20 are supported. .PP \&\f(CW\*(C`GetFileContents\*(C'\fR can be used to retrieve the file contents rather than writing it out. .PP This module is used by \f(CW\*(C`h2xs\*(C'\fR to write the file \fIppport.h\fR. .SS "Why use ppport.h?" .IX Subsection "Why use ppport.h?" You should use \fIppport.h\fR in modern code so that your code will work with the widest range of Perl interpreters possible, without significant additional work. .PP You should attempt older code to fully use \fIppport.h\fR, 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. .SS "How to use ppport.h" .IX Subsection "How to use ppport.h" Don't direct the users of your module to download \f(CW\*(C`Devel::PPPort\*(C'\fR. They are most probably no \s-1XS\s0 writers. Also, don't make \fIppport.h\fR optional. Rather, just take the most recent copy of \fIppport.h\fR that you can find (e.g. by generating it with the latest \f(CW\*(C`Devel::PPPort\*(C'\fR release from \s-1CPAN\s0), copy it into your project, adjust your project to use it, and distribute the header along with your module. .SS "Running ppport.h" .IX Subsection "Running ppport.h" But \fIppport.h\fR 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: .PP .Vb 1 \& perl ppport.h [options] [files] .Ve .PP It also has embedded documentation, so you can use .PP .Vb 1 \& perldoc ppport.h .Ve .PP to find out more about how to use it. .SH "FUNCTIONS" .IX Header "FUNCTIONS" .SS "WriteFile" .IX Subsection "WriteFile" \&\f(CW\*(C`WriteFile\*(C'\fR 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 \fIppport.h\fR. .PP The function returns a true value if the file was written successfully. Otherwise it returns a false value. .SS "GetFileContents" .IX Subsection "GetFileContents" \&\f(CW\*(C`GetFileContents\*(C'\fR behaves like \f(CW\*(C`WriteFile\*(C'\fR above, but returns the contents of the would-be file rather than writing it out. .SH "COMPATIBILITY" .IX Header "COMPATIBILITY" \&\fIppport.h\fR supports Perl versions from 5.003 to 5.20 in threaded and non-threaded configurations. .SS "Provided Perl compatibility \s-1API\s0" .IX Subsection "Provided Perl compatibility API" The header file written by this module, typically \fIppport.h\fR, provides access to the following elements of the Perl \s-1API\s0 that is not available in older Perl releases: .PP .Vb 10 \& _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 .Ve .SS "Perl \s-1API\s0 not supported by ppport.h" .IX Subsection "Perl API not supported by ppport.h" There is still a big part of the \s-1API\s0 not supported by \fIppport.h\fR. Either because it doesn't make sense to back-port that part of the \s-1API,\s0 or simply because it hasn't been implemented yet. Patches welcome! .PP Here's a list of the currently unsupported \s-1API,\s0 and also the version of Perl below which it is unsupported: .IP "perl 5.21.8" 4 .IX Item "perl 5.21.8" .Vb 10 \& 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 .Ve .IP "perl 5.21.7" 4 .IX Item "perl 5.21.7" .Vb 11 \& OpHAS_SIBLING \& OpSIBLING \& OpSIBLING_set \& PadnameUTF8 \& is_invariant_string \& newPADNAMELIST \& newPADNAMEouter \& newPADNAMEpvn \& newUNOP_AUX \& padnamelist_fetch \& padnamelist_store .Ve .IP "perl 5.21.6" 4 .IX Item "perl 5.21.6" .Vb 2 \& newDEFSVOP \& op_convert_list .Ve .IP "perl 5.21.5" 4 .IX Item "perl 5.21.5" .Vb 3 \& cv_name \& newMETHOP \& newMETHOP_named .Ve .IP "perl 5.21.4" 4 .IX Item "perl 5.21.4" .Vb 4 \& cv_set_call_checker_flags \& grok_infnan \& isinfnan \& sync_locale .Ve .IP "perl 5.21.2" 4 .IX Item "perl 5.21.2" .Vb 3 \& grok_number_flags \& op_parent \& op_sibling_splice .Ve .IP "perl 5.21.1" 4 .IX Item "perl 5.21.1" .Vb 11 \& _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 .Ve .IP "perl 5.19.10" 4 .IX Item "perl 5.19.10" .Vb 1 \& OP_TYPE_IS_OR_WAS .Ve .IP "perl 5.19.9" 4 .IX Item "perl 5.19.9" .Vb 4 \& _to_utf8_fold_flags \& _to_utf8_lower_flags \& _to_utf8_title_flags \& _to_utf8_upper_flags .Ve .IP "perl 5.19.7" 4 .IX Item "perl 5.19.7" .Vb 1 \& OP_TYPE_IS .Ve .IP "perl 5.19.4" 4 .IX Item "perl 5.19.4" .Vb 3 \& append_utf8_from_native_byte \& is_safe_syscall \& uvoffuni_to_utf8_flags .Ve .IP "perl 5.19.3" 4 .IX Item "perl 5.19.3" .Vb 2 \& croak_memory_wrap \& sv_pos_b2u_flags .Ve .IP "perl 5.19.2" 4 .IX Item "perl 5.19.2" .Vb 1 \& SVt_INVLIST .Ve .IP "perl 5.19.1" 4 .IX Item "perl 5.19.1" .Vb 5 \& re_intuit_start \& toFOLD \& toFOLD_utf8 \& toLOWER_L1 \& toTITLE .Ve .IP "perl 5.18.0" 4 .IX Item "perl 5.18.0" .Vb 1 \& hv_rand_set .Ve .IP "perl 5.17.9" 4 .IX Item "perl 5.17.9" .Vb 2 \& av_tindex \& av_top_index .Ve .IP "perl 5.17.8" 4 .IX Item "perl 5.17.8" .Vb 7 \& _is_uni_FOO \& _is_uni_perl_idcont \& _is_utf8_FOO \& _is_utf8_mark \& _is_utf8_perl_idcont \& isALPHANUMERIC \& isIDCONT .Ve .IP "perl 5.17.7" 4 .IX Item "perl 5.17.7" .Vb 6 \& SvREFCNT_dec_NN \& _is_uni_perl_idstart \& _is_utf8_perl_idstart \& is_uni_alnumc \& is_uni_alnumc_lc \& is_utf8_alnumc .Ve .IP "perl 5.17.6" 4 .IX Item "perl 5.17.6" .Vb 1 \& READ_XDIGIT .Ve .IP "perl 5.17.4" 4 .IX Item "perl 5.17.4" .Vb 4 \& PL_comppad_name \& PadlistREFCNT \& newMYSUB \& newSVpadname .Ve .IP "perl 5.17.2" 4 .IX Item "perl 5.17.2" .Vb 6 \& is_uni_blank \& is_uni_blank_lc \& is_utf8_blank \& sv_copypv_flags \& sv_copypv_nomg \& sv_vcatpvfn_flags .Ve .IP "perl 5.15.9" 4 .IX Item "perl 5.15.9" .Vb 4 \& utf8_to_uvchr_buf \& utf8_to_uvuni_buf \& valid_utf8_to_uvchr \& valid_utf8_to_uvuni .Ve .IP "perl 5.15.8" 4 .IX Item "perl 5.15.8" .Vb 2 \& is_utf8_char_buf \& wrap_op_checker .Ve .IP "perl 5.15.7" 4 .IX Item "perl 5.15.7" .Vb 7 \& toLOWER_utf8 \& toTITLE_utf8 \& toUPPER_utf8 \& to_utf8_fold \& to_utf8_lower \& to_utf8_title \& to_utf8_upper .Ve .IP "perl 5.15.6" 4 .IX Item "perl 5.15.6" .Vb 1 \& newCONSTSUB_flags .Ve .IP "perl 5.15.4" 4 .IX Item "perl 5.15.4" .Vb 10 \& 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 .Ve .IP "perl 5.15.1" 4 .IX Item "perl 5.15.1" .Vb 10 \& 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 .Ve .IP "perl 5.14.0" 4 .IX Item "perl 5.14.0" .Vb 1 \& _to_uni_fold_flags .Ve .IP "perl 5.13.10" 4 .IX Item "perl 5.13.10" .Vb 3 \& foldEQ_utf8_flags \& is_utf8_xidcont \& is_utf8_xidfirst .Ve .IP "perl 5.13.8" 4 .IX Item "perl 5.13.8" .Vb 5 \& foldEQ_latin1 \& parse_arithexpr \& parse_fullexpr \& parse_listexpr \& parse_termexpr .Ve .IP "perl 5.13.7" 4 .IX Item "perl 5.13.7" .Vb 10 \& 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 .Ve .IP "perl 5.13.6" 4 .IX Item "perl 5.13.6" .Vb 10 \& 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 .Ve .IP "perl 5.13.5" 4 .IX Item "perl 5.13.5" .Vb 4 \& PL_rpeepp \& isOCTAL \& lex_stuff_pvs \& parse_fullstmt .Ve .IP "perl 5.13.3" 4 .IX Item "perl 5.13.3" .Vb 2 \& blockhook_register \& croak_no_modify .Ve .IP "perl 5.13.2" 4 .IX Item "perl 5.13.2" .Vb 8 \& SvNV_nomg \& find_rundefsv \& foldEQ \& foldEQ_locale \& foldEQ_utf8 \& hv_fill \& sv_dec_nomg \& sv_inc_nomg .Ve .IP "perl 5.13.1" 4 .IX Item "perl 5.13.1" .Vb 5 \& croak_sv \& die_sv \& mess_sv \& sv_2nv_flags \& warn_sv .Ve .IP "perl 5.11.5" 4 .IX Item "perl 5.11.5" .Vb 1 \& sv_pos_u2b_flags .Ve .IP "perl 5.11.4" 4 .IX Item "perl 5.11.4" .Vb 1 \& prescan_version .Ve .IP "perl 5.11.2" 4 .IX Item "perl 5.11.2" .Vb 12 \& 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 .Ve .IP "perl 5.11.1" 4 .IX Item "perl 5.11.1" .Vb 5 \& ck_warner \& ck_warner_d \& is_utf8_perl_space \& is_utf8_perl_word \& is_utf8_posix_digit .Ve .IP "perl 5.11.0" 4 .IX Item "perl 5.11.0" .Vb 10 \& 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 .Ve .IP "perl 5.10.1" 4 .IX Item "perl 5.10.1" .Vb 12 \& 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 .Ve .IP "perl 5.10.0" 4 .IX Item "perl 5.10.0" .Vb 6 \& hv_common \& hv_common_key_len \& sv_destroyable \& sys_init \& sys_init3 \& sys_term .Ve .IP "perl 5.9.5" 4 .IX Item "perl 5.9.5" .Vb 10 \& 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 .Ve .IP "perl 5.9.4" 4 .IX Item "perl 5.9.4" .Vb 8 \& PerlIO_context_layers \& gv_name_set \& hv_copy_hints_hv \& my_vsnprintf \& newXS_flags \& regclass_swash \& sv_does \& sv_usepvn_flags .Ve .IP "perl 5.9.3" 4 .IX Item "perl 5.9.3" .Vb 10 \& 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 .Ve .IP "perl 5.9.2" 4 .IX Item "perl 5.9.2" .Vb 6 \& SvPVbyte_force \& find_rundefsvoffset \& op_refcnt_lock \& op_refcnt_unlock \& savesvpv \& vnormal .Ve .IP "perl 5.9.1" 4 .IX Item "perl 5.9.1" .Vb 5 \& hv_clear_placeholders \& hv_scalar \& scan_version \& sv_2iv_flags \& sv_2uv_flags .Ve .IP "perl 5.9.0" 4 .IX Item "perl 5.9.0" .Vb 5 \& new_version \& save_set_svflags \& vcmp \& vnumify \& vstringify .Ve .IP "perl 5.8.3" 4 .IX Item "perl 5.8.3" .Vb 2 \& SvIsCOW \& SvIsCOW_shared_hash .Ve .IP "perl 5.8.1" 4 .IX Item "perl 5.8.1" .Vb 10 \& 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 .Ve .IP "perl 5.8.0" 4 .IX Item "perl 5.8.0" .Vb 5 \& HeUTF8 \& hv_iternext_flags \& hv_store_flags \& is_utf8_idcont \& nothreadhook .Ve .IP "perl 5.7.3" 4 .IX Item "perl 5.7.3" .Vb 10 \& 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 .Ve .IP "perl 5.7.2" 4 .IX Item "perl 5.7.2" .Vb 10 \& 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 .Ve .IP "perl 5.7.1" 4 .IX Item "perl 5.7.1" .Vb 10 \& 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 .Ve .IP "perl 5.6.1" 4 .IX Item "perl 5.6.1" .Vb 10 \& 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 .Ve .IP "perl 5.6.0" 4 .IX Item "perl 5.6.0" .Vb 10 \& 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 .Ve .IP "perl 5.005_03" 4 .IX Item "perl 5.005_03" .Vb 3 \& POPpx \& get_vtbl \& save_generic_svref .Ve .IP "perl 5.005" 4 .IX Item "perl 5.005" .Vb 10 \& 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 .Ve .IP "perl 5.004_05" 4 .IX Item "perl 5.004_05" .Vb 5 \& CopyD \& MoveD \& do_binmode \& save_aelem \& save_helem .Ve .IP "perl 5.004" 4 .IX Item "perl 5.004" .Vb 10 \& 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 .Ve .IP "perl 5.003_07" 4 .IX Item "perl 5.003_07" .Vb 10 \& 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 .Ve .SH "BUGS" .IX Header "BUGS" If you find any bugs, \f(CW\*(C`Devel::PPPort\*(C'\fR doesn't seem to build on your system, or any of its tests fail, please file an issue here: .SH "AUTHORS" .IX Header "AUTHORS" .IP "\(bu" 2 Version 1.x of Devel::PPPort was written by Kenneth Albanowski. .IP "\(bu" 2 Version 2.x was ported to the Perl core by Paul Marquess. .IP "\(bu" 2 Version 3.x was ported back to \s-1CPAN\s0 by Marcus Holland-Moritz. .IP "\(bu" 2 Versions >= 3.22 are maintained with support from Matthew Horsfall (alh). .SH "COPYRIGHT" .IX Header "COPYRIGHT" Version 3.x, Copyright (C) 2004\-2013, Marcus Holland-Moritz. .PP Version 2.x, Copyright (C) 2001, Paul Marquess. .PP Version 1.x, Copyright (C) 1999, Kenneth Albanowski. .PP This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. .SH "SEE ALSO" .IX Header "SEE ALSO" See h2xs, ppport.h.