diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/CORE.pod')
-rw-r--r-- | Master/tlpkg/tlperl/lib/CORE.pod | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/Master/tlpkg/tlperl/lib/CORE.pod b/Master/tlpkg/tlperl/lib/CORE.pod deleted file mode 100644 index ec6a8047a4d..00000000000 --- a/Master/tlpkg/tlperl/lib/CORE.pod +++ /dev/null @@ -1,86 +0,0 @@ -=head1 NAME - -CORE - Namespace for Perl's core routines - -=head1 SYNOPSIS - - BEGIN { - *CORE::GLOBAL::hex = sub { 1; }; - } - - print hex("0x50"),"\n"; # prints 1 - print CORE::hex("0x50"),"\n"; # prints 80 - CORE::say "yes"; # prints yes - - BEGIN { *shove = \&CORE::push; } - shove @array, 1,2,3; # pushes on to @array - -=head1 DESCRIPTION - -The C<CORE> namespace gives access to the original built-in functions of -Perl. The C<CORE> package is built into -Perl, and therefore you do not need to use or -require a hypothetical "CORE" module prior to accessing routines in this -namespace. - -A list of the built-in functions in Perl can be found in L<perlfunc>. - -For all Perl keywords, a C<CORE::> prefix will force the built-in function -to be used, even if it has been overridden or would normally require the -L<feature> pragma. Despite appearances, this has nothing to do with the -CORE package, but is part of Perl's syntax. - -For many Perl functions, the CORE package contains real subroutines. This -feature is new in Perl 5.16. You can take references to these and make -aliases. However, some can only be called as barewords; i.e., you cannot -use ampersand syntax (C<&foo>) or call them through references. See the -C<shove> example above. These subroutines exist for all overridable -keywords, except for C<dump> and the infix operators. Calling with -ampersand syntax and through references does not work for the following -functions, as they have special syntax that cannot always be translated -into a simple list (e.g., C<eof> vs C<eof()>): - -C<chdir>, C<chomp>, C<chop>, C<each>, C<eof>, C<exec>, C<keys>, C<lstat>, -C<pop>, C<push>, C<shift>, C<splice>, C<stat>, C<system>, C<truncate>, -C<unlink>, C<unshift>, C<values> - -=head1 OVERRIDING CORE FUNCTIONS - -To override a Perl built-in routine with your own version, you need to -import it at compile-time. This can be conveniently achieved with the -C<subs> pragma. This will affect only the package in which you've imported -the said subroutine: - - use subs 'chdir'; - sub chdir { ... } - chdir $somewhere; - -To override a built-in globally (that is, in all namespaces), you need to -import your function into the C<CORE::GLOBAL> pseudo-namespace at compile -time: - - BEGIN { - *CORE::GLOBAL::hex = sub { - # ... your code here - }; - } - -The new routine will be called whenever a built-in function is called -without a qualifying package: - - print hex("0x50"),"\n"; # prints 1 - -In both cases, if you want access to the original, unaltered routine, use -the C<CORE::> prefix: - - print CORE::hex("0x50"),"\n"; # prints 80 - -=head1 AUTHOR - -This documentation provided by Tels <nospam-abuse@bloodgate.com> 2007. - -=head1 SEE ALSO - -L<perlsub>, L<perlfunc>. - -=cut |