summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/CORE.pod
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/CORE.pod')
-rw-r--r--Master/tlpkg/tlperl/lib/CORE.pod30
1 files changed, 27 insertions, 3 deletions
diff --git a/Master/tlpkg/tlperl/lib/CORE.pod b/Master/tlpkg/tlperl/lib/CORE.pod
index c917bba44a0..ec6a8047a4d 100644
--- a/Master/tlpkg/tlperl/lib/CORE.pod
+++ b/Master/tlpkg/tlperl/lib/CORE.pod
@@ -1,6 +1,6 @@
=head1 NAME
-CORE - Pseudo-namespace for Perl's core routines
+CORE - Namespace for Perl's core routines
=head1 SYNOPSIS
@@ -10,16 +10,40 @@ CORE - Pseudo-namespace for Perl's core routines
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. There is no C<CORE> package, and therefore you do not need to use or
-require an hypothetical "CORE" module prior to accessing routines in this
+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