Commit | Line | Data |
16c23894 |
1 | package Sub::Name; |
54595ea8 |
2 | # ABSTRACT: (re)name a sub |
16c23894 |
3 | |
54595ea8 |
4 | =pod |
16c23894 |
5 | |
6 | =head1 SYNOPSIS |
7 | |
8 | use Sub::Name; |
9 | |
10 | subname $name, $subref; |
11 | |
12 | $subref = subname foo => sub { ... }; |
13 | |
14 | =head1 DESCRIPTION |
15 | |
d73d8321 |
16 | This module has only one function, which is also exported by default: |
16c23894 |
17 | |
30f18ad8 |
18 | =for stopwords subname |
19 | |
16c23894 |
20 | =head2 subname NAME, CODEREF |
21 | |
a0f015f5 |
22 | Assigns a new name to referenced sub. If package specification is omitted in |
16c23894 |
23 | the name, then the current package is used. The return value is the sub. |
24 | |
a0f015f5 |
25 | The name is only used for informative routines (caller, Carp, etc). You won't |
26 | be able to actually invoke the sub by the given name. To allow that, you need |
16c23894 |
27 | to do glob-assignment yourself. |
28 | |
a0f015f5 |
29 | Note that for anonymous closures (subs that reference lexicals declared outside |
30 | the sub itself) you can name each instance of the closure differently, which |
d73d8321 |
31 | can be very useful for debugging. |
16c23894 |
32 | |
fa1e9525 |
33 | =head1 SEE ALSO |
34 | |
691b40bc |
35 | =for :list |
36 | * L<Sub::Identify> - for getting information about subs |
86f08d91 |
37 | * L<Sub::Util> - set_subname is another implementation of C<subname> |
fa1e9525 |
38 | |
30f18ad8 |
39 | =for stopwords cPanel |
40 | |
d2e2a4b9 |
41 | =head1 COPYRIGHT AND LICENSE |
42 | |
54595ea8 |
43 | This software is copyright (c) 2004, 2008 by Matthijs van Duin, all rights reserved; |
44 | copyright (c) 2014 cPanel Inc., all rights reserved. |
16c23894 |
45 | |
a0f015f5 |
46 | This program is free software; you can redistribute it and/or modify |
16c23894 |
47 | it under the same terms as Perl itself. |
48 | |
49 | =cut |
50 | |
51 | use 5.006; |
52 | |
53 | use strict; |
54 | use warnings; |
55 | |
dfd7ef25 |
56 | our $VERSION = '0.13'; |
57 | |
c2501c3b |
58 | use Exporter 5.57 'import'; |
16c23894 |
59 | |
60 | our @EXPORT = qw(subname); |
61 | our @EXPORT_OK = @EXPORT; |
62 | |
54595ea8 |
63 | use XSLoader; |
64 | XSLoader::load( |
65 | __PACKAGE__, |
dfd7ef25 |
66 | $VERSION, |
54595ea8 |
67 | ); |
16c23894 |
68 | |
69 | 1; |