Commit | Line | Data |
---|---|---|
8cf6f931 | 1 | use strict; |
80305961 | 2 | package Tie::Hash::NamedCapture; |
3195cf34 | 3 | |
f8088870 NC |
4 | our $VERSION = "0.08"; |
5 | ||
8cf6f931 | 6 | require XSLoader; |
4b5ae309 | 7 | XSLoader::load(); # This returns true, which makes require happy. |
44a2ac75 YO |
8 | |
9 | __END__ | |
10 | ||
11 | =head1 NAME | |
12 | ||
80305961 | 13 | Tie::Hash::NamedCapture - Named regexp capture buffers |
44a2ac75 YO |
14 | |
15 | =head1 SYNOPSIS | |
16 | ||
80305961 | 17 | tie my %hash, "Tie::Hash::NamedCapture"; |
3195cf34 | 18 | # %hash now behaves like %+ |
44a2ac75 | 19 | |
28d8d7f4 | 20 | tie my %hash, "Tie::Hash::NamedCapture", all => 1; |
3195cf34 | 21 | # %hash now access buffers from regexp in $qr like %- |
44a2ac75 YO |
22 | |
23 | =head1 DESCRIPTION | |
24 | ||
3195cf34 | 25 | This module is used to implement the special hashes C<%+> and C<%->, but it |
28d8d7f4 | 26 | can be used to tie other variables as you choose. |
44a2ac75 | 27 | |
3195cf34 RGS |
28 | When the C<all> parameter is provided, then the tied hash elements will be |
29 | array refs listing the contents of each capture buffer whose name is the | |
30 | same as the associated hash key. If none of these buffers were involved in | |
31 | the match, the contents of that array ref will be as many C<undef> values | |
32 | as there are capture buffers with that name. In other words, the tied hash | |
9f8c97d1 | 33 | will behave as C<%->. |
44a2ac75 | 34 | |
3195cf34 RGS |
35 | When the C<all> parameter is omitted or false, then the tied hash elements |
36 | will be the contents of the leftmost defined buffer with the name of the | |
9f8c97d1 RGS |
37 | associated hash key. In other words, the tied hash will behave as |
38 | C<%+>. | |
44a2ac75 | 39 | |
3195cf34 RGS |
40 | The keys of C<%->-like hashes correspond to all buffer names found in the |
41 | regular expression; the keys of C<%+>-like hashes list only the names of | |
42 | buffers that have captured (and that are thus associated to defined values). | |
44a2ac75 | 43 | |
44a2ac75 YO |
44 | =head1 SEE ALSO |
45 | ||
192b9cd1 AB |
46 | L<perlreapi>, L<re>, L<perlmodlib/Pragmatic Modules>, L<perlvar/"%+">, |
47 | L<perlvar/"%-">. | |
44a2ac75 YO |
48 | |
49 | =cut |