X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FCORE.pod;h=c917bba44a05e64f4c041905ecfab618e66d1634;hb=9d48bc6db099a4f84cb04d1ada69930fb35f8da1;hp=c3c7c1f24c4b673ac18bd66e34adfd52e08cc65b;hpb=c8472d06082df3e0150ffe3794f2af69985f0f68;p=p5sagit%2Fp5-mst-13.2.git diff --git a/lib/CORE.pod b/lib/CORE.pod index c3c7c1f..c917bba 100644 --- a/lib/CORE.pod +++ b/lib/CORE.pod @@ -1,51 +1,62 @@ =head1 NAME -CORE - Virtual namespace for Perl's core routines +CORE - Pseudo-namespace for Perl's core routines =head1 SYNOPSIS - BEGIN - { - *CORE::GLOBAL::hex = sub { 1; }; - } + BEGIN { + *CORE::GLOBAL::hex = sub { 1; }; + } - print hex("0x50"),"\n"; # prints 1 - print CORE::hex("0x50"),"\n"; # prints 80 + print hex("0x50"),"\n"; # prints 1 + print CORE::hex("0x50"),"\n"; # prints 80 =head1 DESCRIPTION -The C namespace gives access to the original build-in functions from -Perl. There is no C-package, and therefore you do not need to use or -require the CORE-module prior to accessing routines in this namespace. +The C namespace gives access to the original built-in functions of +Perl. There is no C package, and therefore you do not need to use or +require an hypothetical "CORE" module prior to accessing routines in this +namespace. -A list of the build-in functions in Perl can be found in L. +A list of the built-in functions in Perl can be found in L. =head1 OVERRIDING CORE FUNCTIONS -The C namespace allows you to override the Perl build-in -routines with your own version: +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 pragma. This will affect only the package in which you've imported +the said subroutine: - *CORE::GLOBAL::hex = sub - { - # ... your code here - }; + use subs 'chdir'; + sub chdir { ... } + chdir $somewhere; -The new routine will be called whenever a build-in function is called +To override a built-in globally (that is, in all namespaces), you need to +import your function into the C 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 + print hex("0x50"),"\n"; # prints 1 -If you want access to the original, unaltered routine, use the C -prefix: +In both cases, if you want access to the original, unaltered routine, use +the C prefix: - print CORE::hex("0x50"),"\n"; # prints 80 + print CORE::hex("0x50"),"\n"; # prints 80 =head1 AUTHOR -Tels 2007. +This documentation provided by Tels 2007. =head1 SEE ALSO -L, L. +L, L. =cut