Perl 5 version 30.0 documentation

Devel::PPPort

NAME

Devel::PPPort - Perl/Pollution/Portability

SYNOPSIS

  1. Devel::PPPort::WriteFile(); # defaults to ./ppport.h
  2. Devel::PPPort::WriteFile('someheader.h');
  3. # Same as above but retrieve contents rather than write file
  4. my $contents = Devel::PPPort::GetFileContents();
  5. my $contents = Devel::PPPort::GetFileContents('someheader.h');

Start using Devel::PPPort for XS projects

  1. $ cpan Devel::PPPort
  2. $ perl -MDevel::PPPort -e'Devel::PPPort::WriteFile'
  3. $ perl ppport.h --compat-version=5.6.1 --patch=diff.patch *.xs
  4. $ patch -p0 < diff.patch
  5. $ echo ppport.h >>MANIFEST

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.30 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:

  1. perl ppport.h [options] [files]

It also has embedded documentation, so you can use

  1. 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.30 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:

  1. __ASSERT_
  2. _aMY_CXT
  3. _pMY_CXT
  4. aMY_CXT
  5. aMY_CXT_
  6. aTHX
  7. aTHX_
  8. aTHXR
  9. aTHXR_
  10. av_tindex
  11. av_top_index
  12. AvFILLp
  13. boolSV
  14. C_ARRAY_END
  15. C_ARRAY_LENGTH
  16. call_argv
  17. call_method
  18. call_pv
  19. call_sv
  20. caller_cx
  21. cBOOL
  22. ckWARN
  23. CopFILE
  24. CopFILE_set
  25. CopFILEAV
  26. CopFILEGV
  27. CopFILEGV_set
  28. CopFILESV
  29. CopSTASH
  30. CopSTASH_eq
  31. CopSTASH_set
  32. CopSTASHPV
  33. CopSTASHPV_set
  34. CopyD
  35. CPERLscope
  36. croak_memory_wrap
  37. croak_no_modify
  38. croak_nocontext
  39. croak_sv
  40. croak_xs_usage
  41. dAX
  42. dAXMARK
  43. DEFSV
  44. DEFSV_set
  45. die_sv
  46. dITEMS
  47. dMY_CXT
  48. dMY_CXT_SV
  49. dNOOP
  50. dTHR
  51. dTHX
  52. dTHXa
  53. dTHXoa
  54. dTHXR
  55. dUNDERBAR
  56. dVAR
  57. dXCPT
  58. dXSTARG
  59. END_EXTERN_C
  60. ERRSV
  61. eval_pv
  62. eval_sv
  63. EXTERN_C
  64. G_METHOD
  65. get_av
  66. get_cv
  67. get_cvs
  68. get_hv
  69. get_sv
  70. grok_bin
  71. grok_hex
  72. grok_number
  73. GROK_NUMERIC_RADIX
  74. grok_numeric_radix
  75. grok_oct
  76. gv_fetchpvn_flags
  77. gv_fetchpvs
  78. gv_stashpvn
  79. gv_stashpvs
  80. HEf_SVKEY
  81. HeUTF8
  82. hv_fetchs
  83. hv_stores
  84. HvNAME_get
  85. HvNAMELEN_get
  86. IN_LOCALE
  87. IN_LOCALE_COMPILETIME
  88. IN_LOCALE_RUNTIME
  89. IN_PERL_COMPILETIME
  90. INT2PTR
  91. IS_NUMBER_GREATER_THAN_UV_MAX
  92. IS_NUMBER_IN_UV
  93. IS_NUMBER_INFINITY
  94. IS_NUMBER_NAN
  95. IS_NUMBER_NEG
  96. IS_NUMBER_NOT_INT
  97. isALNUM
  98. isALNUM_A
  99. isALNUMC
  100. isALNUMC_A
  101. isALPHA
  102. isALPHA_A
  103. isALPHANUMERIC
  104. isALPHANUMERIC_A
  105. isASCII
  106. isASCII_A
  107. isBLANK
  108. isBLANK_A
  109. isCNTRL
  110. isCNTRL_A
  111. isDIGIT
  112. isDIGIT_A
  113. isGRAPH
  114. isGRAPH_A
  115. isIDCONT
  116. isIDCONT_A
  117. isIDFIRST
  118. isIDFIRST_A
  119. isLOWER
  120. isLOWER_A
  121. isOCTAL
  122. isOCTAL_A
  123. isPRINT
  124. isPRINT_A
  125. isPSXSPC
  126. isPSXSPC_A
  127. isPUNCT
  128. isPUNCT_A
  129. isSPACE
  130. isSPACE_A
  131. isUPPER
  132. isUPPER_A
  133. isWORDCHAR
  134. isWORDCHAR_A
  135. isXDIGIT
  136. isXDIGIT_A
  137. IVdf
  138. IVSIZE
  139. IVTYPE
  140. LIKELY
  141. load_module
  142. memEQ
  143. memEQs
  144. memNE
  145. memNEs
  146. mess
  147. mess_nocontext
  148. mess_sv
  149. mg_findext
  150. MoveD
  151. mPUSHi
  152. mPUSHn
  153. mPUSHp
  154. mPUSHs
  155. mPUSHu
  156. MUTABLE_PTR
  157. MUTABLE_SV
  158. mXPUSHi
  159. mXPUSHn
  160. mXPUSHp
  161. mXPUSHs
  162. mXPUSHu
  163. MY_CXT
  164. MY_CXT_CLONE
  165. MY_CXT_INIT
  166. my_snprintf
  167. my_sprintf
  168. my_strlcat
  169. my_strlcpy
  170. my_strnlen
  171. newCONSTSUB
  172. newRV_inc
  173. newRV_noinc
  174. newSV_type
  175. newSVpvn
  176. newSVpvn_flags
  177. newSVpvn_share
  178. newSVpvn_utf8
  179. newSVpvs
  180. newSVpvs_flags
  181. newSVpvs_share
  182. newSVuv
  183. Newx
  184. Newxc
  185. Newxz
  186. NOOP
  187. NUM2PTR
  188. NVef
  189. NVff
  190. NVgf
  191. NVTYPE
  192. OpHAS_SIBLING
  193. OpLASTSIB_set
  194. OpMAYBESIB_set
  195. OpMORESIB_set
  196. OpSIBLING
  197. packWARN
  198. PERL_ABS
  199. PERL_ARGS_ASSERT_CROAK_XS_USAGE
  200. PERL_BCDVERSION
  201. Perl_croak_no_modify
  202. PERL_GCC_BRACE_GROUPS_FORBIDDEN
  203. PERL_HASH
  204. PERL_INT_MAX
  205. PERL_INT_MIN
  206. PERL_LONG_MAX
  207. PERL_LONG_MIN
  208. PERL_MAGIC_arylen
  209. PERL_MAGIC_backref
  210. PERL_MAGIC_bm
  211. PERL_MAGIC_collxfrm
  212. PERL_MAGIC_dbfile
  213. PERL_MAGIC_dbline
  214. PERL_MAGIC_defelem
  215. PERL_MAGIC_env
  216. PERL_MAGIC_envelem
  217. PERL_MAGIC_ext
  218. PERL_MAGIC_fm
  219. PERL_MAGIC_glob
  220. PERL_MAGIC_isa
  221. PERL_MAGIC_isaelem
  222. PERL_MAGIC_mutex
  223. PERL_MAGIC_nkeys
  224. PERL_MAGIC_overload
  225. PERL_MAGIC_overload_elem
  226. PERL_MAGIC_overload_table
  227. PERL_MAGIC_pos
  228. PERL_MAGIC_qr
  229. PERL_MAGIC_regdata
  230. PERL_MAGIC_regdatum
  231. PERL_MAGIC_regex_global
  232. PERL_MAGIC_shared
  233. PERL_MAGIC_shared_scalar
  234. PERL_MAGIC_sig
  235. PERL_MAGIC_sigelem
  236. PERL_MAGIC_substr
  237. PERL_MAGIC_sv
  238. PERL_MAGIC_taint
  239. PERL_MAGIC_tied
  240. PERL_MAGIC_tiedelem
  241. PERL_MAGIC_tiedscalar
  242. PERL_MAGIC_utf8
  243. PERL_MAGIC_uvar
  244. PERL_MAGIC_uvar_elem
  245. PERL_MAGIC_vec
  246. PERL_MAGIC_vstring
  247. PERL_PV_ESCAPE_ALL
  248. PERL_PV_ESCAPE_FIRSTCHAR
  249. PERL_PV_ESCAPE_NOBACKSLASH
  250. PERL_PV_ESCAPE_NOCLEAR
  251. PERL_PV_ESCAPE_QUOTE
  252. PERL_PV_ESCAPE_RE
  253. PERL_PV_ESCAPE_UNI
  254. PERL_PV_ESCAPE_UNI_DETECT
  255. PERL_PV_PRETTY_DUMP
  256. PERL_PV_PRETTY_ELLIPSES
  257. PERL_PV_PRETTY_LTGT
  258. PERL_PV_PRETTY_NOCLEAR
  259. PERL_PV_PRETTY_QUOTE
  260. PERL_PV_PRETTY_REGPROP
  261. PERL_QUAD_MAX
  262. PERL_QUAD_MIN
  263. PERL_REVISION
  264. PERL_SCAN_ALLOW_UNDERSCORES
  265. PERL_SCAN_DISALLOW_PREFIX
  266. PERL_SCAN_GREATER_THAN_UV_MAX
  267. PERL_SCAN_SILENT_ILLDIGIT
  268. PERL_SHORT_MAX
  269. PERL_SHORT_MIN
  270. PERL_SIGNALS_UNSAFE_FLAG
  271. PERL_SUBVERSION
  272. PERL_UCHAR_MAX
  273. PERL_UCHAR_MIN
  274. PERL_UINT_MAX
  275. PERL_UINT_MIN
  276. PERL_ULONG_MAX
  277. PERL_ULONG_MIN
  278. PERL_UNUSED_ARG
  279. PERL_UNUSED_CONTEXT
  280. PERL_UNUSED_DECL
  281. PERL_UNUSED_RESULT
  282. PERL_UNUSED_VAR
  283. PERL_UQUAD_MAX
  284. PERL_UQUAD_MIN
  285. PERL_USE_GCC_BRACE_GROUPS
  286. PERL_USHORT_MAX
  287. PERL_USHORT_MIN
  288. PERL_VERSION
  289. Perl_warner
  290. Perl_warner_nocontext
  291. PERLIO_FUNCS_CAST
  292. PERLIO_FUNCS_DECL
  293. PL_bufend
  294. PL_bufptr
  295. PL_compiling
  296. PL_copline
  297. PL_curcop
  298. PL_curstash
  299. PL_DBsignal
  300. PL_DBsingle
  301. PL_DBsub
  302. PL_DBtrace
  303. PL_debstash
  304. PL_defgv
  305. PL_diehook
  306. PL_dirty
  307. PL_dowarn
  308. PL_errgv
  309. PL_error_count
  310. PL_expect
  311. PL_hexdigit
  312. PL_hints
  313. PL_in_my
  314. PL_in_my_stash
  315. PL_laststatval
  316. PL_lex_state
  317. PL_lex_stuff
  318. PL_linestr
  319. PL_na
  320. PL_no_modify
  321. PL_parser
  322. PL_perl_destruct_level
  323. PL_perldb
  324. PL_ppaddr
  325. PL_rsfp
  326. PL_rsfp_filters
  327. PL_signals
  328. PL_stack_base
  329. PL_stack_sp
  330. PL_statcache
  331. PL_stdingv
  332. PL_Sv
  333. PL_sv_arenaroot
  334. PL_sv_no
  335. PL_sv_undef
  336. PL_sv_yes
  337. PL_tainted
  338. PL_tainting
  339. PL_tokenbuf
  340. pMY_CXT
  341. pMY_CXT_
  342. Poison
  343. PoisonFree
  344. PoisonNew
  345. PoisonWith
  346. pTHX
  347. pTHX_
  348. PTR2IV
  349. PTR2nat
  350. PTR2NV
  351. PTR2ul
  352. PTR2UV
  353. PTRV
  354. PUSHmortal
  355. PUSHu
  356. pv_display
  357. pv_escape
  358. pv_pretty
  359. SAVE_DEFSV
  360. START_EXTERN_C
  361. START_MY_CXT
  362. STMT_END
  363. STMT_START
  364. STR_WITH_LEN
  365. sv_2pv_flags
  366. sv_2pv_nolen
  367. sv_2pvbyte
  368. sv_2pvbyte_nolen
  369. sv_2uv
  370. sv_catpv_mg
  371. sv_catpvf_mg
  372. sv_catpvf_mg_nocontext
  373. sv_catpvn_mg
  374. sv_catpvn_nomg
  375. sv_catpvs
  376. sv_catsv_mg
  377. sv_catsv_nomg
  378. SV_CONST_RETURN
  379. SV_COW_DROP_PV
  380. SV_COW_SHARED_HASH_KEYS
  381. SV_GMAGIC
  382. SV_HAS_TRAILING_NUL
  383. SV_IMMEDIATE_UNREF
  384. sv_magic_portable
  385. SV_MUTABLE_RETURN
  386. SV_NOSTEAL
  387. sv_pvn_force_flags
  388. sv_pvn_nomg
  389. sv_setiv_mg
  390. sv_setnv_mg
  391. sv_setpv_mg
  392. sv_setpvf_mg
  393. sv_setpvf_mg_nocontext
  394. sv_setpvn_mg
  395. sv_setpvs
  396. sv_setsv_mg
  397. sv_setsv_nomg
  398. sv_setuv
  399. sv_setuv_mg
  400. SV_SMAGIC
  401. sv_unmagicext
  402. sv_usepvn_mg
  403. SV_UTF8_NO_ENCODING
  404. sv_uv
  405. sv_vcatpvf
  406. sv_vcatpvf_mg
  407. sv_vsetpvf
  408. sv_vsetpvf_mg
  409. SVf
  410. SVf_UTF8
  411. SVfARG
  412. SvGETMAGIC
  413. SvIV_nomg
  414. SvMAGIC_set
  415. SvPV_const
  416. SvPV_flags
  417. SvPV_flags_const
  418. SvPV_flags_const_nolen
  419. SvPV_flags_mutable
  420. SvPV_force
  421. SvPV_force_flags
  422. SvPV_force_flags_mutable
  423. SvPV_force_flags_nolen
  424. SvPV_force_mutable
  425. SvPV_force_nolen
  426. SvPV_force_nomg
  427. SvPV_force_nomg_nolen
  428. SvPV_mutable
  429. SvPV_nolen
  430. SvPV_nolen_const
  431. SvPV_nomg
  432. SvPV_nomg_const
  433. SvPV_nomg_const_nolen
  434. SvPV_nomg_nolen
  435. SvPV_renew
  436. SvPVbyte
  437. SvPVX_const
  438. SvPVX_mutable
  439. SvREFCNT_inc
  440. SvREFCNT_inc_NN
  441. SvREFCNT_inc_simple
  442. SvREFCNT_inc_simple_NN
  443. SvREFCNT_inc_simple_void
  444. SvREFCNT_inc_simple_void_NN
  445. SvREFCNT_inc_void
  446. SvREFCNT_inc_void_NN
  447. SvRV_set
  448. SvRX
  449. SvRXOK
  450. SvSHARED_HASH
  451. SvSTASH_set
  452. SvUOK
  453. SvUV
  454. SvUV_nomg
  455. SvUV_set
  456. SvUVX
  457. SvUVx
  458. SvUVXx
  459. SvVSTRING_mg
  460. UNDERBAR
  461. UNICODE_REPLACEMENT
  462. UNLIKELY
  463. UTF8_MAXBYTES
  464. UTF8_SAFE_SKIP
  465. utf8_to_uvchr
  466. utf8_to_uvchr_buf
  467. UVof
  468. UVSIZE
  469. UVTYPE
  470. UVuf
  471. UVXf
  472. UVxf
  473. vload_module
  474. vmess
  475. vnewSVpvf
  476. WARN_ALL
  477. WARN_AMBIGUOUS
  478. WARN_ASSERTIONS
  479. WARN_BAREWORD
  480. WARN_CLOSED
  481. WARN_CLOSURE
  482. WARN_DEBUGGING
  483. WARN_DEPRECATED
  484. WARN_DIGIT
  485. WARN_EXEC
  486. WARN_EXITING
  487. WARN_GLOB
  488. WARN_INPLACE
  489. WARN_INTERNAL
  490. WARN_IO
  491. WARN_LAYER
  492. WARN_MALLOC
  493. WARN_MISC
  494. WARN_NEWLINE
  495. warn_nocontext
  496. WARN_NUMERIC
  497. WARN_ONCE
  498. WARN_OVERFLOW
  499. WARN_PACK
  500. WARN_PARENTHESIS
  501. WARN_PIPE
  502. WARN_PORTABLE
  503. WARN_PRECEDENCE
  504. WARN_PRINTF
  505. WARN_PROTOTYPE
  506. WARN_QW
  507. WARN_RECURSION
  508. WARN_REDEFINE
  509. WARN_REGEXP
  510. WARN_RESERVED
  511. WARN_SEMICOLON
  512. WARN_SEVERE
  513. WARN_SIGNAL
  514. WARN_SUBSTR
  515. warn_sv
  516. WARN_SYNTAX
  517. WARN_TAINT
  518. WARN_THREADS
  519. WARN_UNINITIALIZED
  520. WARN_UNOPENED
  521. WARN_UNPACK
  522. WARN_UNTIE
  523. WARN_UTF8
  524. WARN_VOID
  525. warner
  526. WIDEST_UTYPE
  527. XCPT_CATCH
  528. XCPT_RETHROW
  529. XCPT_TRY_END
  530. XCPT_TRY_START
  531. XPUSHmortal
  532. XPUSHu
  533. XSprePUSH
  534. XSPROTO
  535. XSRETURN
  536. XSRETURN_UV
  537. XST_mUV
  538. 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.24.0
    1. BhkDISABLE
    2. BhkENABLE
    3. BhkENTRY_set
    4. MULTICALL
    5. PERL_SYS_TERM
    6. POP_MULTICALL
    7. PUSH_MULTICALL
    8. PadARRAY
    9. PadMAX
    10. PadlistARRAY
    11. PadlistMAX
    12. PadlistNAMES
    13. PadlistNAMESARRAY
    14. PadlistNAMESMAX
    15. PadnameLEN
    16. PadnamePV
    17. PadnameREFCNT
    18. PadnameREFCNT_dec
    19. PadnameSV
    20. PadnamelistARRAY
    21. PadnamelistMAX
    22. PadnamelistREFCNT
    23. PadnamelistREFCNT_dec
    24. RESTORE_LC_NUMERIC
    25. STORE_LC_NUMERIC_FORCE_TO_UNDERLYING
    26. STORE_LC_NUMERIC_SET_TO_NEEDED
    27. XS_APIVERSION_BOOTCHECK
    28. XS_EXTERNAL
    29. XS_INTERNAL
    30. XS_VERSION_BOOTCHECK
    31. XopDISABLE
    32. XopENABLE
    33. XopENTRY
    34. XopENTRYCUSTOM
    35. XopENTRY_set
    36. cophh_new_empty
    37. my_lstat
    38. my_stat
    39. reentrant_free
    40. reentrant_init
    41. reentrant_retry
    42. reentrant_size
    43. ref
    44. sv_setref_pvs
  • perl 5.23.9
    1. toFOLD_uvchr
    2. toLOWER_uvchr
    3. toTITLE_uvchr
    4. toUPPER_uvchr
  • perl 5.23.8
    1. clear_defarray
  • perl 5.22.0
    1. UVCHR_SKIP
  • perl 5.21.10
    1. DECLARATION_FOR_LC_NUMERIC_MANIPULATION
  • perl 5.21.7
    1. PadnameUTF8
    2. is_invariant_string
    3. newUNOP_AUX
  • perl 5.21.6
    1. newDEFSVOP
    2. op_convert_list
  • perl 5.21.5
    1. cv_name
    2. newMETHOP
    3. newMETHOP_named
  • perl 5.21.4
    1. cv_set_call_checker_flags
    2. grok_infnan
    3. isinfnan
    4. sync_locale
  • perl 5.21.2
    1. grok_number_flags
    2. op_sibling_splice
  • perl 5.21.1
    1. isUTF8_CHAR
    2. markstack_grow
  • perl 5.19.10
    1. OP_TYPE_IS_OR_WAS
  • perl 5.19.7
    1. OP_TYPE_IS
  • perl 5.19.4
    1. is_safe_syscall
    2. uvoffuni_to_utf8_flags
  • perl 5.19.3
    1. sv_pos_b2u_flags
  • perl 5.19.2
    1. SVt_INVLIST
  • perl 5.19.1
    1. re_intuit_start
    2. toFOLD
    3. toFOLD_utf8
    4. toLOWER_L1
    5. toTITLE
  • perl 5.18.0
    1. hv_rand_set
  • perl 5.17.9
    1. av_tindex
    2. av_top_index
  • perl 5.17.8
    1. isALPHANUMERIC
    2. isIDCONT
  • perl 5.17.7
    1. SvREFCNT_dec_NN
  • perl 5.17.6
    1. READ_XDIGIT
  • perl 5.17.4
    1. PL_comppad_name
    2. PadlistREFCNT
    3. newMYSUB
    4. newSVpadname
  • perl 5.17.2
    1. sv_copypv_flags
    2. sv_copypv_nomg
    3. sv_vcatpvfn_flags
  • perl 5.15.9
    1. utf8_to_uvchr_buf
  • perl 5.15.8
    1. is_utf8_char_buf
    2. wrap_op_checker
  • perl 5.15.7
    1. toLOWER_utf8
    2. toTITLE_utf8
    3. toUPPER_utf8
    4. to_utf8_fold
    5. to_utf8_lower
    6. to_utf8_title
    7. to_utf8_upper
  • perl 5.15.6
    1. newCONSTSUB_flags
  • perl 5.15.4
    1. HvENAMELEN
    2. HvENAMEUTF8
    3. HvNAMELEN
    4. HvNAMEUTF8
    5. gv_autoload_pv
    6. gv_autoload_pvn
    7. gv_autoload_sv
    8. gv_fetchmeth_pv
    9. gv_fetchmeth_pv_autoload
    10. gv_fetchmeth_pvn
    11. gv_fetchmeth_pvn_autoload
    12. gv_fetchmeth_sv
    13. gv_fetchmeth_sv_autoload
    14. gv_init_pv
    15. gv_init_sv
    16. newGVgen_flags
    17. sv_derived_from_pv
    18. sv_derived_from_pvn
    19. sv_derived_from_sv
    20. sv_does_pv
    21. sv_does_pvn
    22. sv_does_sv
    23. sv_ref
    24. whichsig_pv
    25. whichsig_pvn
    26. whichsig_sv
  • perl 5.15.1
    1. pad_add_name_pv
    2. pad_add_name_pvn
    3. pad_add_name_pvs
    4. pad_add_name_sv
    5. pad_findmy_pv
    6. pad_findmy_pvn
    7. pad_findmy_pvs
    8. pad_findmy_sv
  • perl 5.13.8
    1. foldEQ_latin1
  • perl 5.13.7
    1. HvENAME
    2. OP_CLASS
    3. XopFLAGS
    4. amagic_deref_call
    5. bytes_cmp_utf8
    6. cop_hints_2hv
    7. cop_hints_fetch_pv
    8. cop_hints_fetch_pvn
    9. cop_hints_fetch_pvs
    10. cop_hints_fetch_sv
    11. cophh_2hv
    12. cophh_copy
    13. cophh_delete_pv
    14. cophh_delete_pvn
    15. cophh_delete_pvs
    16. cophh_delete_sv
    17. cophh_fetch_pv
    18. cophh_fetch_pvn
    19. cophh_fetch_pvs
    20. cophh_fetch_sv
    21. cophh_free
    22. cophh_store_pv
    23. cophh_store_pvn
    24. cophh_store_pvs
    25. cophh_store_sv
    26. custom_op_register
    27. custom_op_xop
    28. newFOROP
    29. newWHILEOP
  • perl 5.13.6
    1. LINKLIST
    2. SvTRUE_nomg
    3. ck_entersub_args_list
    4. ck_entersub_args_proto
    5. ck_entersub_args_proto_or_list
    6. cv_get_call_checker
    7. cv_set_call_checker
    8. isWORDCHAR
    9. mg_free_type
    10. newSVpv_share
    11. op_append_elem
    12. op_append_list
    13. op_contextualize
    14. op_linklist
    15. op_prepend_elem
    16. rv2cv_op_cv
    17. savesharedpvs
    18. savesharedsvpv
    19. sv_2bool_flags
    20. sv_catpv_flags
    21. sv_catpv_nomg
    22. sv_catpvs_flags
    23. sv_catpvs_mg
    24. sv_catpvs_nomg
    25. sv_cmp_flags
    26. sv_cmp_locale_flags
    27. sv_collxfrm_flags
    28. sv_eq_flags
    29. sv_setpvs_mg
  • perl 5.13.5
    1. PL_rpeepp
    2. isOCTAL
    3. lex_stuff_pvs
  • perl 5.13.3
    1. blockhook_register
  • perl 5.13.2
    1. SvNV_nomg
    2. find_rundefsv
    3. foldEQ
    4. foldEQ_locale
    5. foldEQ_utf8
    6. hv_fill
    7. sv_dec_nomg
    8. sv_inc_nomg
  • perl 5.13.1
    1. sv_2nv_flags
  • perl 5.11.5
    1. sv_pos_u2b_flags
  • perl 5.11.4
    1. prescan_version
  • perl 5.11.2
    1. PL_keyword_plugin
  • perl 5.11.1
    1. ck_warner
    2. ck_warner_d
  • perl 5.11.0
    1. Gv_AMupdate
    2. PL_opfreehook
    3. SVt_REGEXP
    4. SvOOK_offset
    5. av_iter_p
    6. gv_add_by_type
    7. is_ascii_string
    8. pregfree2
    9. save_adelete
    10. save_aelem_flags
    11. save_hdelete
    12. save_helem_flags
    13. sv_utf8_upgrade_flags_grow
  • perl 5.10.1
    1. mro_get_from_name
    2. mro_get_private_data
    3. mro_register
    4. mro_set_mro
    5. mro_set_private_data
    6. save_hints
    7. save_padsv_and_mortalize
    8. save_pushi32ptr
    9. save_pushptr
    10. save_pushptrptr
    11. sv_insert_flags
  • perl 5.10.0
    1. hv_common
    2. hv_common_key_len
    3. sv_destroyable
    4. sys_init
    5. sys_init3
    6. sys_term
  • perl 5.9.5
    1. gv_fetchfile_flags
    2. mro_get_linear_isa
    3. mro_method_changed_in
    4. my_dirfd
    5. pregcomp
    6. ptr_table_fetch
    7. ptr_table_free
    8. ptr_table_new
    9. ptr_table_split
    10. ptr_table_store
    11. re_compile
    12. reg_named_buff_all
    13. reg_named_buff_exists
    14. reg_named_buff_fetch
    15. reg_named_buff_firstkey
    16. reg_named_buff_nextkey
    17. reg_named_buff_scalar
    18. regfree_internal
    19. savesharedpvn
    20. scan_vstring
    21. upg_version
  • perl 5.9.4
    1. PerlIO_context_layers
    2. gv_name_set
    3. hv_copy_hints_hv
    4. my_vsnprintf
    5. sv_does
    6. sv_usepvn_flags
  • perl 5.9.3
    1. av_arylen_p
    2. ckwarn
    3. ckwarn_d
    4. csighandler
    5. dMULTICALL
    6. doref
    7. gv_const_sv
    8. hv_eiter_p
    9. hv_eiter_set
    10. hv_name_set
    11. hv_placeholders_get
    12. hv_placeholders_set
    13. hv_riter_p
    14. hv_riter_set
    15. is_utf8_string_loclen
    16. newGIVENOP
    17. newSVhek
    18. newWHENOP
    19. pad_compname_type
    20. savepvs
    21. sortsv_flags
    22. vverify
  • perl 5.9.2
    1. SvPVbyte_force
    2. op_refcnt_lock
    3. op_refcnt_unlock
    4. savesvpv
    5. vnormal
  • perl 5.9.1
    1. hv_clear_placeholders
    2. hv_scalar
    3. scan_version
    4. sv_2iv_flags
    5. sv_2uv_flags
  • perl 5.9.0
    1. new_version
    2. save_set_svflags
    3. vcmp
    4. vnumify
    5. vstringify
  • perl 5.8.3
    1. SvIsCOW
    2. SvIsCOW_shared_hash
  • perl 5.8.1
    1. CvPADLIST
    2. PL_comppad
    3. SvVOK
    4. doing_taint
    5. find_runcv
    6. is_utf8_string_loc
    7. packlist
    8. pad_add_anon
    9. pad_new
    10. save_bool
    11. savestack_grow_cnt
    12. seed
    13. sv_cat_decode
    14. sv_setpviv
    15. sv_setpviv_mg
    16. unpackstring
  • perl 5.8.0
    1. HeUTF8
    2. nothreadhook
  • perl 5.7.3
    1. OP_DESC
    2. OP_NAME
    3. PL_peepp
    4. PerlIO_clearerr
    5. PerlIO_close
    6. PerlIO_eof
    7. PerlIO_error
    8. PerlIO_fileno
    9. PerlIO_fill
    10. PerlIO_flush
    11. PerlIO_get_base
    12. PerlIO_get_bufsiz
    13. PerlIO_get_cnt
    14. PerlIO_get_ptr
    15. PerlIO_read
    16. PerlIO_seek
    17. PerlIO_set_cnt
    18. PerlIO_set_ptrcnt
    19. PerlIO_setlinebuf
    20. PerlIO_stderr
    21. PerlIO_stdin
    22. PerlIO_stdout
    23. PerlIO_tell
    24. PerlIO_unread
    25. PerlIO_write
    26. SvLOCK
    27. SvSHARE
    28. SvUNLOCK
    29. atfork_lock
    30. atfork_unlock
    31. custom_op_desc
    32. custom_op_name
    33. deb
    34. debstack
    35. debstackptrs
    36. gv_fetchmeth_autoload
    37. ibcmp_utf8
    38. my_fork
    39. my_socketpair
    40. pack_cat
    41. perl_destruct
    42. pv_uni_display
    43. save_shared_pvref
    44. savesharedpv
    45. sortsv
    46. sv_magicext
    47. sv_nolocking
    48. sv_nosharing
    49. sv_recode_to_utf8
    50. sv_uni_display
    51. unpack_str
    52. uvchr_to_utf8_flags
    53. uvuni_to_utf8_flags
    54. vdeb
  • perl 5.7.2
    1. calloc
    2. getcwd_sv
    3. init_tm
    4. malloc
    5. mfree
    6. mini_mktime
    7. my_atof2
    8. my_strftime
    9. op_null
    10. realloc
    11. sv_catpvn_flags
    12. sv_catsv_flags
    13. sv_setsv_flags
    14. sv_utf8_upgrade_flags
    15. sv_utf8_upgrade_nomg
  • perl 5.7.1
    1. POPpbytex
    2. despatch_signals
    3. do_openn
    4. gv_handler
    5. is_lvalue_sub
    6. my_popen_list
    7. save_mortalizesv
    8. scan_num
    9. sv_force_normal_flags
    10. sv_setref_uv
    11. sv_unref_flags
    12. sv_utf8_upgrade
    13. utf8_length
    14. utf8n_to_uvchr
    15. utf8n_to_uvuni
    16. uvchr_to_utf8
    17. uvuni_to_utf8
  • perl 5.6.1
    1. SvGAMAGIC
    2. gv_efullname4
    3. gv_fullname4
    4. is_utf8_string
    5. save_generic_pvref
    6. utf16_to_utf8
    7. utf16_to_utf8_reversed
  • perl 5.6.0
    1. DO_UTF8
    2. PERL_SYS_INIT3
    3. PL_check
    4. POPul
    5. SvIOK_UV
    6. SvIOK_notUV
    7. SvIOK_only_UV
    8. SvPOK_only_UTF8
    9. SvPVbyte_nolen
    10. SvPVbytex
    11. SvPVbytex_force
    12. SvPVutf8
    13. SvPVutf8_force
    14. SvPVutf8_nolen
    15. SvPVutf8x
    16. SvPVutf8x_force
    17. SvUOK
    18. SvUTF8
    19. SvUTF8_off
    20. SvUTF8_on
    21. UTF8SKIP
    22. av_delete
    23. av_exists
    24. call_atexit
    25. caller_cx
    26. cast_i32
    27. cast_iv
    28. cast_ulong
    29. cast_uv
    30. do_gv_dump
    31. do_gvgv_dump
    32. do_hv_dump
    33. do_magic_dump
    34. do_op_dump
    35. do_open9
    36. do_pmop_dump
    37. do_sv_dump
    38. dump_all
    39. dump_eval
    40. dump_form
    41. dump_indent
    42. dump_packsubs
    43. dump_sub
    44. dump_vindent
    45. get_context
    46. get_ppaddr
    47. gv_dump
    48. magic_dump
    49. my_atof
    50. my_fflush_all
    51. newANONATTRSUB
    52. newATTRSUB
    53. newXS
    54. newXSproto
    55. op_dump
    56. perl_parse
    57. pmop_dump
    58. re_intuit_string
    59. reginitcolors
    60. require_pv
    61. safesyscalloc
    62. safesysfree
    63. safesysmalloc
    64. safesysrealloc
    65. save_I8
    66. save_alloc
    67. save_destructor
    68. save_destructor_x
    69. save_re_context
    70. save_vptr
    71. scan_bin
    72. set_context
    73. set_numeric_local
    74. set_numeric_radix
    75. set_numeric_standard
    76. str_to_version
    77. sv_2pvutf8
    78. sv_2pvutf8_nolen
    79. sv_force_normal
    80. sv_len_utf8
    81. sv_pos_b2u
    82. sv_pos_u2b
    83. sv_pv
    84. sv_pvbyte
    85. sv_pvbyten
    86. sv_pvbyten_force
    87. sv_pvutf8
    88. sv_pvutf8n
    89. sv_pvutf8n_force
    90. sv_rvweaken
    91. sv_utf8_encode
    92. utf8_distance
    93. utf8_hop
    94. vcroak
    95. vform
    96. vmess
    97. vwarn
    98. vwarner
  • perl 5.005_03
    1. POPpx
    2. get_vtbl
    3. save_generic_svref
  • perl 5.005
    1. PL_curpad
    2. PL_modglobal
    3. cx_dump
    4. debop
    5. debprofdump
    6. fbm_compile
    7. fbm_instr
    8. get_op_descs
    9. get_op_names
    10. init_stacks
    11. mg_size
    12. newHVhv
    13. new_stackinfo
    14. regdump
    15. regexec_flags
    16. regnext
    17. runops_debug
    18. runops_standard
    19. save_iv
    20. save_op
    21. sv_iv
    22. sv_nv
    23. sv_peek
    24. sv_pvn
    25. sv_pvn_nomg
    26. sv_true
  • perl 5.004_05
    1. CopyD
    2. MoveD
    3. do_binmode
    4. my_bcopy
    5. save_aelem
    6. save_helem
  • perl 5.004
    1. GIMME_V
    2. G_VOID
    3. HePV
    4. HeSVKEY_set
    5. POPu
    6. SvSetMagicSV
    7. SvSetMagicSV_nosteal
    8. SvSetSV_nosteal
    9. SvTAINTED
    10. SvTAINTED_off
    11. SvTAINTED_on
    12. block_end
    13. block_gimme
    14. block_start
    15. call_list
    16. delimcpy
    17. form
    18. gv_autoload4
    19. gv_fetchmethod_autoload
    20. hv_delayfree_ent
    21. hv_free_ent
    22. ibcmp_locale
    23. intro_my
    24. my_failure_exit
    25. newSVpvf
    26. rsignal
    27. rsignal_state
    28. save_I16
    29. save_gp
    30. share_hek
    31. start_subparse
    32. sv_catpvf
    33. sv_catpvf_mg
    34. sv_cmp_locale
    35. sv_derived_from
    36. sv_magic_portable
    37. sv_setpvf
    38. sv_setpvf_mg
    39. sv_taint
    40. sv_tainted
    41. sv_untaint
    42. sv_vcatpvf
    43. sv_vcatpvf_mg
    44. sv_vcatpvfn
    45. sv_vsetpvf
    46. sv_vsetpvf_mg
    47. sv_vsetpvfn
    48. toLOWER_LC
    49. vnewSVpvf
    50. warner
  • perl 5.003_07
    1. HeHASH
    2. HeKEY
    3. HeKLEN
    4. HeSVKEY
    5. HeSVKEY_force
    6. HeVAL
    7. cv_const_sv
    8. do_open
    9. gv_efullname3
    10. gv_fullname3
    11. hv_delete_ent
    12. hv_exists_ent
    13. hv_fetch_ent
    14. hv_iterkeysv
    15. hv_ksplit
    16. hv_store_ent
    17. my_pclose
    18. my_popen
    19. sv_gets
    20. unsharepvn

BUGS

If you find any bugs, Devel::PPPort doesn't seem to build on your system, or any of its tests fail, please send a bug report to perlbug@perl.org.

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

COPYRIGHT

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

  1. Copyright (C) 2018, The perl5 porters

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.