Cari di Perl 
    Perl User Manual
Daftar Isi
(Sebelumnya) Perl's support for DTraceFunctions AUTOLOAD (Berikutnya)
Language Reference

Namespace for Perl's core routines

Daftar Isi

NAME

CORE - Namespace for Perl's core routines

SYNOPSIS

  1. BEGIN {
  2. *CORE::GLOBAL::hex = sub { 1; };
  3. }
  4. print hex("0x50"),"\n";# prints 1
  5. print CORE::hex("0x50"),"\n";# prints 80
  6. CORE::say "yes";# prints yes
  7. BEGIN { *shove = \&CORE::push; }
  8. shove @array, 1,2,3;# pushes on to @array

DESCRIPTION

The CORE namespace gives access to the original built-in functions ofPerl. The CORE package is built intoPerl, and therefore you do not need to use orrequire a hypothetical "CORE" module prior to accessing routines in thisnamespace.

A list of the built-in functions in Perl can be found in perlfunc.

For all Perl keywords, a CORE:: prefix will force the built-in functionto be used, even if it has been overridden or would normally require thefeature pragma. Despite appearances, this has nothing to do with theCORE package, but is part of Perl's syntax.

For many Perl functions, the CORE package contains real subroutines. Thisfeature is new in Perl 5.16. You can take references to these and makealiases. However, some can only be called as barewords; i.e., you cannotuse ampersand syntax (&foo) or call them through references. See theshove example above. These subroutines exist for all overridablekeywords, except for dump and the infix operators. Calling withampersand syntax and through references does not work for the followingfunctions, as they have special syntax that cannot always be translatedinto a simple list (e.g., eof vs eof()):

chdir, chomp, chop, each, eof, exec, keys, lstat,pop, push, shift, splice, stat, system, truncate,unlink, unshift, values

OVERRIDING CORE FUNCTIONS

To override a Perl built-in routine with your own version, you need toimport it at compile-time. This can be conveniently achieved with thesubs pragma. This will affect only the package in which you've importedthe said subroutine:

  1. use subs 'chdir';
  2. sub chdir { ... }
  3. chdir $somewhere;

To override a built-in globally (that is, in all namespaces), you need toimport your function into the CORE::GLOBAL pseudo-namespace at compiletime:

  1. BEGIN {
  2. *CORE::GLOBAL::hex = sub {
  3. # ... your code here
  4. };
  5. }

The new routine will be called whenever a built-in function is calledwithout a qualifying package:

  1. print hex("0x50"),"\n";# prints 1

In both cases, if you want access to the original, unaltered routine, usethe CORE:: prefix:

  1. print CORE::hex("0x50"),"\n";# prints 80

AUTHOR

This documentation provided by Tels <[email protected]> 2007.

SEE ALSO

perlsub, perlfunc.

 
Source : perldoc.perl.org - Official documentation for the Perl programming language
Site maintained by Jon Allen (JJ)     See the project page for more details
Documentation maintained by the Perl 5 Porters
(Sebelumnya) Perl's support for DTraceFunctions AUTOLOAD (Berikutnya)