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