xref: /openbsd-src/gnu/usr.bin/perl/lib/CORE.pod (revision d13be5d47e4149db2549a9828e244d59dbc43f15)
1=head1 NAME
2
3CORE - Pseudo-namespace for Perl's core routines
4
5=head1 SYNOPSIS
6
7    BEGIN {
8        *CORE::GLOBAL::hex = sub { 1; };
9    }
10
11    print hex("0x50"),"\n";			# prints 1
12    print CORE::hex("0x50"),"\n";		# prints 80
13
14=head1 DESCRIPTION
15
16The C<CORE> namespace gives access to the original built-in functions of
17Perl. There is no C<CORE> package, and therefore you do not need to use or
18require an hypothetical "CORE" module prior to accessing routines in this
19namespace.
20
21A list of the built-in functions in Perl can be found in L<perlfunc>.
22
23=head1 OVERRIDING CORE FUNCTIONS
24
25To override a Perl built-in routine with your own version, you need to
26import it at compile-time. This can be conveniently achieved with the
27C<subs> pragma. This will affect only the package in which you've imported
28the said subroutine:
29
30    use subs 'chdir';
31    sub chdir { ... }
32    chdir $somewhere;
33
34To override a built-in globally (that is, in all namespaces), you need to
35import your function into the C<CORE::GLOBAL> pseudo-namespace at compile
36time:
37
38    BEGIN {
39        *CORE::GLOBAL::hex = sub {
40            # ... your code here
41        };
42    }
43
44The new routine will be called whenever a built-in function is called
45without a qualifying package:
46
47    print hex("0x50"),"\n";			# prints 1
48
49In both cases, if you want access to the original, unaltered routine, use
50the C<CORE::> prefix:
51
52    print CORE::hex("0x50"),"\n";		# prints 80
53
54=head1 AUTHOR
55
56This documentation provided by Tels <nospam-abuse@bloodgate.com> 2007.
57
58=head1 SEE ALSO
59
60L<perlsub>, L<perlfunc>.
61
62=cut
63