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