File: CORE.pod

package info (click to toggle)
perl 5.10.1-17squeeze6
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 74,280 kB
  • ctags: 49,087
  • sloc: perl: 319,380; ansic: 193,238; sh: 37,981; pascal: 8,830; lisp: 7,515; cpp: 3,893; makefile: 2,375; xml: 1,972; yacc: 1,555
file content (62 lines) | stat: -rw-r--r-- 1,569 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
=head1 NAME

CORE - Pseudo-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

=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
namespace.

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

=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