| 42 | | * In order for a Perl extension module to be as portable as possible |
| 43 | | * across differing versions of Perl itself, certain steps need to be taken. |
| 44 | | * Including this header is the first major one, then using dTHR is all the |
| 45 | | * appropriate places and using a PL_ prefix to refer to global Perl |
| 46 | | * variables is the second. |
| 47 | | * |
| 48 | | */ |
| 49 | | |
| 50 | | |
| 51 | | /* If you use one of a few functions that were not present in earlier |
| 52 | | * versions of Perl, please add a define before the inclusion of ppport.h |
| 53 | | * for a static include, or use the GLOBAL request in a single module to |
| 54 | | * produce a global definition that can be referenced from the other |
| 55 | | * modules. |
| 56 | | * |
| 57 | | * Function: Static define: Extern define: |
| 58 | | * newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL |
| 59 | | * |
| 60 | | */ |
| 61 | | |
| 62 | | |
| 63 | | /* To verify whether ppport.h is needed for your module, and whether any |
| 64 | | * special defines should be used, ppport.h can be run through Perl to check |
| 65 | | * your source code. Simply say: |
| 66 | | * |
| 67 | | * perl -x ppport.h *.c *.h *.xs foo/bar*.c [etc] |
| 68 | | * |
| 69 | | * The result will be a list of patches suggesting changes that should at |
| 70 | | * least be acceptable, if not necessarily the most efficient solution, or a |
| 71 | | * fix for all possible problems. It won't catch where dTHR is needed, and |
| 72 | | * doesn't attempt to account for global macro or function definitions, |
| 73 | | * nested includes, typemaps, etc. |
| 74 | | * |
| 75 | | * In order to test for the need of dTHR, please try your module under a |
| 76 | | * recent version of Perl that has threading compiled-in. |
| 77 | | * |
| 78 | | */ |
| 79 | | |
| 80 | | |
| 81 | | /* |
| 82 | | #!/usr/bin/perl |
| 83 | | @ARGV = ("*.xs") if !@ARGV; |
| 84 | | %badmacros = %funcs = %macros = (); $replace = 0; |
| 85 | | foreach (<DATA>) { |
| 86 | | $funcs{$1} = 1 if /Provide:\s+(\S+)/; |
| 87 | | $macros{$1} = 1 if /^#\s*define\s+([a-zA-Z0-9_]+)/; |
| 88 | | $replace = $1 if /Replace:\s+(\d+)/; |
| 89 | | $badmacros{$2}=$1 if $replace and /^#\s*define\s+([a-zA-Z0-9_]+).*?\s+([a-zA-Z0-9_]+)/; |
| 90 | | $badmacros{$1}=$2 if /Replace (\S+) with (\S+)/; |
| | 5 | ---------------------------------------------------------------------- |
| | 6 | |
| | 7 | ppport.h -- Perl/Pollution/Portability Version 3.13_03 |
| | 8 | |
| | 9 | Automatically created by Devel::PPPort running under perl 5.008008. |
| | 10 | |
| | 11 | Do NOT edit this file directly! -- Edit PPPort_pm.PL and the |
| | 12 | includes in parts/inc/ instead. |
| | 13 | |
| | 14 | Use 'perldoc ppport.h' to view the documentation below. |
| | 15 | |
| | 16 | ---------------------------------------------------------------------- |
| | 17 | |
| | 18 | SKIP |
| | 19 | |
| | 20 | =pod |
| | 21 | |
| | 22 | =head1 NAME |
| | 23 | |
| | 24 | ppport.h - Perl/Pollution/Portability version 3.13_03 |
| | 25 | |
| | 26 | =head1 SYNOPSIS |
| | 27 | |
| | 28 | perl ppport.h [options] [source files] |
| | 29 | |
| | 30 | Searches current directory for files if no [source files] are given |
| | 31 | |
| | 32 | --help show short help |
| | 33 | |
| | 34 | --version show version |
| | 35 | |
| | 36 | --patch=file write one patch file with changes |
| | 37 | --copy=suffix write changed copies with suffix |
| | 38 | --diff=program use diff program and options |
| | 39 | |
| | 40 | --compat-version=version provide compatibility with Perl version |
| | 41 | --cplusplus accept C++ comments |
| | 42 | |
| | 43 | --quiet don't output anything except fatal errors |
| | 44 | --nodiag don't show diagnostics |
| | 45 | --nohints don't show hints |
| | 46 | --nochanges don't suggest changes |
| | 47 | --nofilter don't filter input files |
| | 48 | |
| | 49 | --strip strip all script and doc functionality from |
| | 50 | ppport.h |
| | 51 | |
| | 52 | --list-provided list provided API |
| | 53 | --list-unsupported list unsupported API |
| | 54 | --api-info=name show Perl API portability information |
| | 55 | |
| | 56 | =head1 COMPATIBILITY |
| | 57 | |
| | 58 | This version of F<ppport.h> is designed to support operation with Perl |
| | 59 | installations back to 5.003, and has been tested up to 5.10.0. |
| | 60 | |
| | 61 | =head1 OPTIONS |
| | 62 | |
| | 63 | =head2 --help |
| | 64 | |
| | 65 | Display a brief usage summary. |
| | 66 | |
| | 67 | =head2 --version |
| | 68 | |
| | 69 | Display the version of F<ppport.h>. |
| | 70 | |
| | 71 | =head2 --patch=I<file> |
| | 72 | |
| | 73 | If this option is given, a single patch file will be created if |
| | 74 | any changes are suggested. This requires a working diff program |
| | 75 | to be installed on your system. |
| | 76 | |
| | 77 | =head2 --copy=I<suffix> |
| | 78 | |
| | 79 | If this option is given, a copy of each file will be saved with |
| | 80 | the given suffix that contains the suggested changes. This does |
| | 81 | not require any external programs. Note that this does not |
| | 82 | automagially add a dot between the original filename and the |
| | 83 | suffix. If you want the dot, you have to include it in the option |
| | 84 | argument. |
| | 85 | |
| | 86 | If neither C<--patch> or C<--copy> are given, the default is to |
| | 87 | simply print the diffs for each file. This requires either |
| | 88 | C<Text::Diff> or a C<diff> program to be installed. |
| | 89 | |
| | 90 | =head2 --diff=I<program> |
| | 91 | |
| | 92 | Manually set the diff program and options to use. The default |
| | 93 | is to use C<Text::Diff>, when installed, and output unified |
| | 94 | context diffs. |
| | 95 | |
| | 96 | =head2 --compat-version=I<version> |
| | 97 | |
| | 98 | Tell F<ppport.h> to check for compatibility with the given |
| | 99 | Perl version. The default is to check for compatibility with Perl |
| | 100 | version 5.003. You can use this option to reduce the output |
| | 101 | of F<ppport.h> if you intend to be backward compatible only |
| | 102 | down to a certain Perl version. |
| | 103 | |
| | 104 | =head2 --cplusplus |
| | 105 | |
| | 106 | Usually, F<ppport.h> will detect C++ style comments and |
| | 107 | replace them with C style comments for portability reasons. |
| | 108 | Using this option instructs F<ppport.h> to leave C++ |
| | 109 | comments untouched. |
| | 110 | |
| | 111 | =head2 --quiet |
| | 112 | |
| | 113 | Be quiet. Don't print anything except fatal errors. |
| | 114 | |
| | 115 | =head2 --nodiag |
| | 116 | |
| | 117 | Don't output any diagnostic messages. Only portability |
| | 118 | alerts will be printed. |
| | 119 | |
| | 120 | =head2 --nohints |
| | 121 | |
| | 122 | Don't output any hints. Hints often contain useful portability |
| | 123 | notes. Warnings will still be displayed. |
| | 124 | |
| | 125 | =head2 --nochanges |
| | 126 | |
| | 127 | Don't suggest any changes. Only give diagnostic output and hints |
| | 128 | unless these are also deactivated. |
| | 129 | |
| | 130 | =head2 --nofilter |
| | 131 | |
| | 132 | Don't filter the list of input files. By default, files not looking |
| | 133 | like source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped. |
| | 134 | |
| | 135 | =head2 --strip |
| | 136 | |
| | 137 | Strip all script and documentation functionality from F<ppport.h>. |
| | 138 | This reduces the size of F<ppport.h> dramatically and may be useful |
| | 139 | if you want to include F<ppport.h> in smaller modules without |
| | 140 | increasing their distribution size too much. |
| | 141 | |
| | 142 | The stripped F<ppport.h> will have a C<--unstrip> option that allows |
| | 143 | you to undo the stripping, but only if an appropriate C<Devel::PPPort> |
| | 144 | module is installed. |
| | 145 | |
| | 146 | =head2 --list-provided |
| | 147 | |
| | 148 | Lists the API elements for which compatibility is provided by |
| | 149 | F<ppport.h>. Also lists if it must be explicitly requested, |
| | 150 | if it has dependencies, and if there are hints or warnings for it. |
| | 151 | |
| | 152 | =head2 --list-unsupported |
| | 153 | |
| | 154 | Lists the API elements that are known not to be supported by |
| | 155 | F<ppport.h> and below which version of Perl they probably |
| | 156 | won't be available or work. |
| | 157 | |
| | 158 | =head2 --api-info=I<name> |
| | 159 | |
| | 160 | Show portability information for API elements matching I<name>. |
| | 161 | If I<name> is surrounded by slashes, it is interpreted as a regular |
| | 162 | expression. |
| | 163 | |
| | 164 | =head1 DESCRIPTION |
| | 165 | |
| | 166 | In order for a Perl extension (XS) module to be as portable as possible |
| | 167 | across differing versions of Perl itself, certain steps need to be taken. |
| | 168 | |
| | 169 | =over 4 |
| | 170 | |
| | 171 | =item * |
| | 172 | |
| | 173 | Including this header is the first major one. This alone will give you |
| | 174 | access to a large part of the Perl API that hasn't been available in |
| | 175 | earlier Perl releases. Use |
| | 176 | |
| | 177 | perl ppport.h --list-provided |
| | 178 | |
| | 179 | to see which API elements are provided by ppport.h. |
| | 180 | |
| | 181 | =item * |
| | 182 | |
| | 183 | You should avoid using deprecated parts of the API. For example, using |
| | 184 | global Perl variables without the C<PL_> prefix is deprecated. Also, |
| | 185 | some API functions used to have a C<perl_> prefix. Using this form is |
| | 186 | also deprecated. You can safely use the supported API, as F<ppport.h> |
| | 187 | will provide wrappers for older Perl versions. |
| | 188 | |
| | 189 | =item * |
| | 190 | |
| | 191 | If you use one of a few functions or variables that were not present in |
| | 192 | earlier versions of Perl, and that can't be provided using a macro, you |
| | 193 | have to explicitly request support for these functions by adding one or |
| | 194 | more C<#define>s in your source code before the inclusion of F<ppport.h>. |
| | 195 | |
| | 196 | These functions or variables will be marked C<explicit> in the list shown |
| | 197 | by C<--list-provided>. |
| | 198 | |
| | 199 | Depending on whether you module has a single or multiple files that |
| | 200 | use such functions or variables, you want either C<static> or global |
| | 201 | variants. |
| | 202 | |
| | 203 | For a C<static> function or variable (used only in a single source |
| | 204 | file), use: |
| | 205 | |
| | 206 | #define NEED_function |
| | 207 | #define NEED_variable |
| | 208 | |
| | 209 | For a global function or variable (used in multiple source files), |
| | 210 | use: |
| | 211 | |
| | 212 | #define NEED_function_GLOBAL |
| | 213 | #define NEED_variable_GLOBAL |
| | 214 | |
| | 215 | Note that you mustn't have more than one global request for the |
| | 216 | same function or variable in your project. |
| | 217 | |
| | 218 | Function / Variable Static Request Global Request |
| | 219 | ----------------------------------------------------------------------------------------- |
| | 220 | PL_signals NEED_PL_signals NEED_PL_signals_GLOBAL |
| | 221 | eval_pv() NEED_eval_pv NEED_eval_pv_GLOBAL |
| | 222 | grok_bin() NEED_grok_bin NEED_grok_bin_GLOBAL |
| | 223 | grok_hex() NEED_grok_hex NEED_grok_hex_GLOBAL |
| | 224 | grok_number() NEED_grok_number NEED_grok_number_GLOBAL |
| | 225 | grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL |
| | 226 | grok_oct() NEED_grok_oct NEED_grok_oct_GLOBAL |
| | 227 | load_module() NEED_load_module NEED_load_module_GLOBAL |
| | 228 | my_snprintf() NEED_my_snprintf NEED_my_snprintf_GLOBAL |
| | 229 | my_strlcat() NEED_my_strlcat NEED_my_strlcat_GLOBAL |
| | 230 | my_strlcpy() NEED_my_strlcpy NEED_my_strlcpy_GLOBAL |
| | 231 | newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL |
| | 232 | newRV_noinc() NEED_newRV_noinc NEED_newRV_noinc_GLOBAL |
| | 233 | newSVpvn_flags() NEED_newSVpvn_flags NEED_newSVpvn_flags_GLOBAL |
| | 234 | newSVpvn_share() NEED_newSVpvn_share NEED_newSVpvn_share_GLOBAL |
| | 235 | sv_2pv_flags() NEED_sv_2pv_flags NEED_sv_2pv_flags_GLOBAL |
| | 236 | sv_2pvbyte() NEED_sv_2pvbyte NEED_sv_2pvbyte_GLOBAL |
| | 237 | sv_catpvf_mg() NEED_sv_catpvf_mg NEED_sv_catpvf_mg_GLOBAL |
| | 238 | sv_catpvf_mg_nocontext() NEED_sv_catpvf_mg_nocontext NEED_sv_catpvf_mg_nocontext_GLOBAL |
| | 239 | sv_pvn_force_flags() NEED_sv_pvn_force_flags NEED_sv_pvn_force_flags_GLOBAL |
| | 240 | sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL |
| | 241 | sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL |
| | 242 | vload_module() NEED_vload_module NEED_vload_module_GLOBAL |
| | 243 | vnewSVpvf() NEED_vnewSVpvf NEED_vnewSVpvf_GLOBAL |
| | 244 | warner() NEED_warner NEED_warner_GLOBAL |
| | 245 | |
| | 246 | To avoid namespace conflicts, you can change the namespace of the |
| | 247 | explicitly exported functions / variables using the C<DPPP_NAMESPACE> |
| | 248 | macro. Just C<#define> the macro before including C<ppport.h>: |
| | 249 | |
| | 250 | #define DPPP_NAMESPACE MyOwnNamespace_ |
| | 251 | #include "ppport.h" |
| | 252 | |
| | 253 | The default namespace is C<DPPP_>. |
| | 254 | |
| | 255 | =back |
| | 256 | |
| | 257 | The good thing is that most of the above can be checked by running |
| | 258 | F<ppport.h> on your source code. See the next section for |
| | 259 | details. |
| | 260 | |
| | 261 | =head1 EXAMPLES |
| | 262 | |
| | 263 | To verify whether F<ppport.h> is needed for your module, whether you |
| | 264 | should make any changes to your code, and whether any special defines |
| | 265 | should be used, F<ppport.h> can be run as a Perl script to check your |
| | 266 | source code. Simply say: |
| | 267 | |
| | 268 | perl ppport.h |
| | 269 | |
| | 270 | The result will usually be a list of patches suggesting changes |
| | 271 | that should at least be acceptable, if not necessarily the most |
| | 272 | efficient solution, or a fix for all possible problems. |
| | 273 | |
| | 274 | If you know that your XS module uses features only available in |
| | 275 | newer Perl releases, if you're aware that it uses C++ comments, |
| | 276 | and if you want all suggestions as a single patch file, you could |
| | 277 | use something like this: |
| | 278 | |
| | 279 | perl ppport.h --compat-version=5.6.0 --cplusplus --patch=test.diff |
| | 280 | |
| | 281 | If you only want your code to be scanned without any suggestions |
| | 282 | for changes, use: |
| | 283 | |
| | 284 | perl ppport.h --nochanges |
| | 285 | |
| | 286 | You can specify a different C<diff> program or options, using |
| | 287 | the C<--diff> option: |
| | 288 | |
| | 289 | perl ppport.h --diff='diff -C 10' |
| | 290 | |
| | 291 | This would output context diffs with 10 lines of context. |
| | 292 | |
| | 293 | If you want to create patched copies of your files instead, use: |
| | 294 | |
| | 295 | perl ppport.h --copy=.new |
| | 296 | |
| | 297 | To display portability information for the C<newSVpvn> function, |
| | 298 | use: |
| | 299 | |
| | 300 | perl ppport.h --api-info=newSVpvn |
| | 301 | |
| | 302 | Since the argument to C<--api-info> can be a regular expression, |
| | 303 | you can use |
| | 304 | |
| | 305 | perl ppport.h --api-info=/_nomg$/ |
| | 306 | |
| | 307 | to display portability information for all C<_nomg> functions or |
| | 308 | |
| | 309 | perl ppport.h --api-info=/./ |
| | 310 | |
| | 311 | to display information for all known API elements. |
| | 312 | |
| | 313 | =head1 BUGS |
| | 314 | |
| | 315 | If this version of F<ppport.h> is causing failure during |
| | 316 | the compilation of this module, please check if newer versions |
| | 317 | of either this module or C<Devel::PPPort> are available on CPAN |
| | 318 | before sending a bug report. |
| | 319 | |
| | 320 | If F<ppport.h> was generated using the latest version of |
| | 321 | C<Devel::PPPort> and is causing failure of this module, please |
| | 322 | file a bug report using the CPAN Request Tracker at L<http://rt.cpan.org/>. |
| | 323 | |
| | 324 | Please include the following information: |
| | 325 | |
| | 326 | =over 4 |
| | 327 | |
| | 328 | =item 1. |
| | 329 | |
| | 330 | The complete output from running "perl -V" |
| | 331 | |
| | 332 | =item 2. |
| | 333 | |
| | 334 | This file. |
| | 335 | |
| | 336 | =item 3. |
| | 337 | |
| | 338 | The name and version of the module you were trying to build. |
| | 339 | |
| | 340 | =item 4. |
| | 341 | |
| | 342 | A full log of the build that failed. |
| | 343 | |
| | 344 | =item 5. |
| | 345 | |
| | 346 | Any other information that you think could be relevant. |
| | 347 | |
| | 348 | =back |
| | 349 | |
| | 350 | For the latest version of this code, please get the C<Devel::PPPort> |
| | 351 | module from CPAN. |
| | 352 | |
| | 353 | =head1 COPYRIGHT |
| | 354 | |
| | 355 | Version 3.x, Copyright (c) 2004-2008, Marcus Holland-Moritz. |
| | 356 | |
| | 357 | Version 2.x, Copyright (C) 2001, Paul Marquess. |
| | 358 | |
| | 359 | Version 1.x, Copyright (C) 1999, Kenneth Albanowski. |
| | 360 | |
| | 361 | This program is free software; you can redistribute it and/or |
| | 362 | modify it under the same terms as Perl itself. |
| | 363 | |
| | 364 | =head1 SEE ALSO |
| | 365 | |
| | 366 | See L<Devel::PPPort>. |
| | 367 | |
| | 368 | =cut |
| | 369 | |
| | 370 | use strict; |
| | 371 | |
| | 372 | # Disable broken TRIE-optimization |
| | 373 | BEGIN { eval '${^RE_TRIE_MAXBUF} = -1' if $] >= 5.009004 && $] <= 5.009005 } |
| | 374 | |
| | 375 | my $VERSION = 3.13_03; |
| | 376 | |
| | 377 | my %opt = ( |
| | 378 | quiet => 0, |
| | 379 | diag => 1, |
| | 380 | hints => 1, |
| | 381 | changes => 1, |
| | 382 | cplusplus => 0, |
| | 383 | filter => 1, |
| | 384 | strip => 0, |
| | 385 | version => 0, |
| | 386 | ); |
| | 387 | |
| | 388 | my($ppport) = $0 =~ /([\w.]+)$/; |
| | 389 | my $LF = '(?:\r\n|[\r\n])'; # line feed |
| | 390 | my $HS = "[ \t]"; # horizontal whitespace |
| | 391 | |
| | 392 | # Never use C comments in this file! |
| | 393 | my $ccs = '/'.'*'; |
| | 394 | my $cce = '*'.'/'; |
| | 395 | my $rccs = quotemeta $ccs; |
| | 396 | my $rcce = quotemeta $cce; |
| | 397 | |
| | 398 | eval { |
| | 399 | require Getopt::Long; |
| | 400 | Getopt::Long::GetOptions(\%opt, qw( |
| | 401 | help quiet diag! filter! hints! changes! cplusplus strip version |
| | 402 | patch=s copy=s diff=s compat-version=s |
| | 403 | list-provided list-unsupported api-info=s |
| | 404 | )) or usage(); |
| | 405 | }; |
| | 406 | |
| | 407 | if ($@ and grep /^-/, @ARGV) { |
| | 408 | usage() if "@ARGV" =~ /^--?h(?:elp)?$/; |
| | 409 | die "Getopt::Long not found. Please don't use any options.\n"; |
| | 416 | |
| | 417 | usage() if $opt{help}; |
| | 418 | strip() if $opt{strip}; |
| | 419 | |
| | 420 | if (exists $opt{'compat-version'}) { |
| | 421 | my($r,$v,$s) = eval { parse_version($opt{'compat-version'}) }; |
| | 422 | if ($@) { |
| | 423 | die "Invalid version number format: '$opt{'compat-version'}'\n"; |
| | 424 | } |
| | 425 | die "Only Perl 5 is supported\n" if $r != 5; |
| | 426 | die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000; |
| | 427 | $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s; |
| | 428 | } |
| | 429 | else { |
| | 430 | $opt{'compat-version'} = 5; |
| | 431 | } |
| | 432 | |
| | 433 | my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/ |
| | 434 | ? ( $1 => { |
| | 435 | ($2 ? ( base => $2 ) : ()), |
| | 436 | ($3 ? ( todo => $3 ) : ()), |
| | 437 | (index($4, 'v') >= 0 ? ( varargs => 1 ) : ()), |
| | 438 | (index($4, 'p') >= 0 ? ( provided => 1 ) : ()), |
| | 439 | (index($4, 'n') >= 0 ? ( nothxarg => 1 ) : ()), |
| | 440 | } ) |
| | 441 | : die "invalid spec: $_" } qw( |
| | 442 | AvFILLp|5.004050||p |
| | 443 | AvFILL||| |
| | 444 | CLASS|||n |
| | 445 | CX_CURPAD_SAVE||| |
| | 446 | CX_CURPAD_SV||| |
| | 447 | CopFILEAV|5.006000||p |
| | 448 | CopFILEGV_set|5.006000||p |
| | 449 | CopFILEGV|5.006000||p |
| | 450 | CopFILESV|5.006000||p |
| | 451 | CopFILE_set|5.006000||p |
| | 452 | CopFILE|5.006000||p |
| | 453 | CopSTASHPV_set|5.006000||p |
| | 454 | CopSTASHPV|5.006000||p |
| | 455 | CopSTASH_eq|5.006000||p |
| | 456 | CopSTASH_set|5.006000||p |
| | 457 | CopSTASH|5.006000||p |
| | 458 | CopyD|5.009002||p |
| | 459 | Copy||| |
| | 460 | CvPADLIST||| |
| | 461 | CvSTASH||| |
| | 462 | CvWEAKOUTSIDE||| |
| | 463 | DEFSV|5.004050||p |
| | 464 | END_EXTERN_C|5.005000||p |
| | 465 | ENTER||| |
| | 466 | ERRSV|5.004050||p |
| | 467 | EXTEND||| |
| | 468 | EXTERN_C|5.005000||p |
| | 469 | F0convert|||n |
| | 470 | FREETMPS||| |
| | 471 | GIMME_V||5.004000|n |
| | 472 | GIMME|||n |
| | 473 | GROK_NUMERIC_RADIX|5.007002||p |
| | 474 | G_ARRAY||| |
| | 475 | G_DISCARD||| |
| | 476 | G_EVAL||| |
| | 477 | G_NOARGS||| |
| | 478 | G_SCALAR||| |
| | 479 | G_VOID||5.004000| |
| | 480 | GetVars||| |
| | 481 | GvSV||| |
| | 482 | Gv_AMupdate||| |
| | 483 | HEf_SVKEY||5.004000| |
| | 484 | HeHASH||5.004000| |
| | 485 | HeKEY||5.004000| |
| | 486 | HeKLEN||5.004000| |
| | 487 | HePV||5.004000| |
| | 488 | HeSVKEY_force||5.004000| |
| | 489 | HeSVKEY_set||5.004000| |
| | 490 | HeSVKEY||5.004000| |
| | 491 | HeUTF8||5.011000| |
| | 492 | HeVAL||5.004000| |
| | 493 | HvNAME||| |
| | 494 | INT2PTR|5.006000||p |
| | 495 | IN_LOCALE_COMPILETIME|5.007002||p |
| | 496 | IN_LOCALE_RUNTIME|5.007002||p |
| | 497 | IN_LOCALE|5.007002||p |
| | 498 | IN_PERL_COMPILETIME|5.008001||p |
| | 499 | IS_NUMBER_GREATER_THAN_UV_MAX|5.007002||p |
| | 500 | IS_NUMBER_INFINITY|5.007002||p |
| | 501 | IS_NUMBER_IN_UV|5.007002||p |
| | 502 | IS_NUMBER_NAN|5.007003||p |
| | 503 | IS_NUMBER_NEG|5.007002||p |
| | 504 | IS_NUMBER_NOT_INT|5.007002||p |
| | 505 | IVSIZE|5.006000||p |
| | 506 | IVTYPE|5.006000||p |
| | 507 | IVdf|5.006000||p |
| | 508 | LEAVE||| |
| | 509 | LVRET||| |
| | 510 | MARK||| |
| | 511 | MULTICALL||5.011000| |
| | 512 | MY_CXT_CLONE|5.009002||p |
| | 513 | MY_CXT_INIT|5.007003||p |
| | 514 | MY_CXT|5.007003||p |
| | 515 | MoveD|5.009002||p |
| | 516 | Move||| |
| | 517 | NOOP|5.005000||p |
| | 518 | NUM2PTR|5.006000||p |
| | 519 | NVTYPE|5.006000||p |
| | 520 | NVef|5.006001||p |
| | 521 | NVff|5.006001||p |
| | 522 | NVgf|5.006001||p |
| | 523 | Newxc|5.009003||p |
| | 524 | Newxz|5.009003||p |
| | 525 | Newx|5.009003||p |
| | 526 | Nullav||| |
| | 527 | Nullch||| |
| | 528 | Nullcv||| |
| | 529 | Nullhv||| |
| | 530 | Nullsv||| |
| | 531 | ORIGMARK||| |
| | 532 | PAD_BASE_SV||| |
| | 533 | PAD_CLONE_VARS||| |
| | 534 | PAD_COMPNAME_FLAGS||| |
| | 535 | PAD_COMPNAME_GEN_set||| |
| | 536 | PAD_COMPNAME_GEN||| |
| | 537 | PAD_COMPNAME_OURSTASH||| |
| | 538 | PAD_COMPNAME_PV||| |
| | 539 | PAD_COMPNAME_TYPE||| |
| | 540 | PAD_RESTORE_LOCAL||| |
| | 541 | PAD_SAVE_LOCAL||| |
| | 542 | PAD_SAVE_SETNULLPAD||| |
| | 543 | PAD_SETSV||| |
| | 544 | PAD_SET_CUR_NOSAVE||| |
| | 545 | PAD_SET_CUR||| |
| | 546 | PAD_SVl||| |
| | 547 | PAD_SV||| |
| | 548 | PERL_ABS|5.008001||p |
| | 549 | PERL_BCDVERSION|5.011000||p |
| | 550 | PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||p |
| | 551 | PERL_HASH|5.004000||p |
| | 552 | PERL_INT_MAX|5.004000||p |
| | 553 | PERL_INT_MIN|5.004000||p |
| | 554 | PERL_LONG_MAX|5.004000||p |
| | 555 | PERL_LONG_MIN|5.004000||p |
| | 556 | PERL_MAGIC_arylen|5.007002||p |
| | 557 | PERL_MAGIC_backref|5.007002||p |
| | 558 | PERL_MAGIC_bm|5.007002||p |
| | 559 | PERL_MAGIC_collxfrm|5.007002||p |
| | 560 | PERL_MAGIC_dbfile|5.007002||p |
| | 561 | PERL_MAGIC_dbline|5.007002||p |
| | 562 | PERL_MAGIC_defelem|5.007002||p |
| | 563 | PERL_MAGIC_envelem|5.007002||p |
| | 564 | PERL_MAGIC_env|5.007002||p |
| | 565 | PERL_MAGIC_ext|5.007002||p |
| | 566 | PERL_MAGIC_fm|5.007002||p |
| | 567 | PERL_MAGIC_glob|5.011000||p |
| | 568 | PERL_MAGIC_isaelem|5.007002||p |
| | 569 | PERL_MAGIC_isa|5.007002||p |
| | 570 | PERL_MAGIC_mutex|5.011000||p |
| | 571 | PERL_MAGIC_nkeys|5.007002||p |
| | 572 | PERL_MAGIC_overload_elem|5.007002||p |
| | 573 | PERL_MAGIC_overload_table|5.007002||p |
| | 574 | PERL_MAGIC_overload|5.007002||p |
| | 575 | PERL_MAGIC_pos|5.007002||p |
| | 576 | PERL_MAGIC_qr|5.007002||p |
| | 577 | PERL_MAGIC_regdata|5.007002||p |
| | 578 | PERL_MAGIC_regdatum|5.007002||p |
| | 579 | PERL_MAGIC_regex_global|5.007002||p |
| | 580 | PERL_MAGIC_shared_scalar|5.007003||p |
| | 581 | PERL_MAGIC_shared|5.007003||p |
| | 582 | PERL_MAGIC_sigelem|5.007002||p |
| | 583 | PERL_MAGIC_sig|5.007002||p |
| | 584 | PERL_MAGIC_substr|5.007002||p |
| | 585 | PERL_MAGIC_sv|5.007002||p |
| | 586 | PERL_MAGIC_taint|5.007002||p |
| | 587 | PERL_MAGIC_tiedelem|5.007002||p |
| | 588 | PERL_MAGIC_tiedscalar|5.007002||p |
| | 589 | PERL_MAGIC_tied|5.007002||p |
| | 590 | PERL_MAGIC_utf8|5.008001||p |
| | 591 | PERL_MAGIC_uvar_elem|5.007003||p |
| | 592 | PERL_MAGIC_uvar|5.007002||p |
| | 593 | PERL_MAGIC_vec|5.007002||p |
| | 594 | PERL_MAGIC_vstring|5.008001||p |
| | 595 | PERL_QUAD_MAX|5.004000||p |
| | 596 | PERL_QUAD_MIN|5.004000||p |
| | 597 | PERL_REVISION|5.006000||p |
| | 598 | PERL_SCAN_ALLOW_UNDERSCORES|5.007003||p |
| | 599 | PERL_SCAN_DISALLOW_PREFIX|5.007003||p |
| | 600 | PERL_SCAN_GREATER_THAN_UV_MAX|5.007003||p |
| | 601 | PERL_SCAN_SILENT_ILLDIGIT|5.008001||p |
| | 602 | PERL_SHORT_MAX|5.004000||p |
| | 603 | PERL_SHORT_MIN|5.004000||p |
| | 604 | PERL_SIGNALS_UNSAFE_FLAG|5.008001||p |
| | 605 | PERL_SUBVERSION|5.006000||p |
| | 606 | PERL_UCHAR_MAX|5.004000||p |
| | 607 | PERL_UCHAR_MIN|5.004000||p |
| | 608 | PERL_UINT_MAX|5.004000||p |
| | 609 | PERL_UINT_MIN|5.004000||p |
| | 610 | PERL_ULONG_MAX|5.004000||p |
| | 611 | PERL_ULONG_MIN|5.004000||p |
| | 612 | PERL_UNUSED_ARG|5.009003||p |
| | 613 | PERL_UNUSED_CONTEXT|5.009004||p |
| | 614 | PERL_UNUSED_DECL|5.007002||p |
| | 615 | PERL_UNUSED_VAR|5.007002||p |
| | 616 | PERL_UQUAD_MAX|5.004000||p |
| | 617 | PERL_UQUAD_MIN|5.004000||p |
| | 618 | PERL_USE_GCC_BRACE_GROUPS|5.009004||p |
| | 619 | PERL_USHORT_MAX|5.004000||p |
| | 620 | PERL_USHORT_MIN|5.004000||p |
| | 621 | PERL_VERSION|5.006000||p |
| | 622 | PL_DBsignal|5.005000||p |
| | 623 | PL_DBsingle|||pn |
| | 624 | PL_DBsub|||pn |
| | 625 | PL_DBtrace|||pn |
| | 626 | PL_Sv|5.005000||p |
| | 627 | PL_compiling|5.004050||p |
| | 628 | PL_copl |