1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
.\" -*- mode: troff; coding: utf-8 -*-
.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
.ie n \{\
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds C`
. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{\
. if \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{\
. nr % 0
. nr F 2
. \}
. \}
.\}
.rr rF
.\" ========================================================================
.\"
.IX Title "Tie::Hash::NamedCapture 3perl"
.TH Tie::Hash::NamedCapture 3perl 2024-02-11 "perl v5.38.2" "Perl Programmers Reference Guide"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH NAME
Tie::Hash::NamedCapture \- Named regexp capture buffers
.SH SYNOPSIS
.IX Header "SYNOPSIS"
.Vb 2
\& tie my %hash, "Tie::Hash::NamedCapture";
\& # %hash now behaves like %+
\&
\& tie my %hash, "Tie::Hash::NamedCapture", all => 1;
\& # %hash now access buffers from regexp in $qr like %\-
.Ve
.SH DESCRIPTION
.IX Header "DESCRIPTION"
This module is used to implement the special hashes \f(CW\*(C`%+\*(C'\fR and \f(CW\*(C`%\-\*(C'\fR, but it
can be used to tie other variables as you choose.
.PP
When the \f(CW\*(C`all\*(C'\fR parameter is provided, then the tied hash elements will be
array refs listing the contents of each capture buffer whose name is the
same as the associated hash key. If none of these buffers were involved in
the match, the contents of that array ref will be as many \f(CW\*(C`undef\*(C'\fR values
as there are capture buffers with that name. In other words, the tied hash
will behave as \f(CW\*(C`%\-\*(C'\fR.
.PP
When the \f(CW\*(C`all\*(C'\fR parameter is omitted or false, then the tied hash elements
will be the contents of the leftmost defined buffer with the name of the
associated hash key. In other words, the tied hash will behave as
\&\f(CW\*(C`%+\*(C'\fR.
.PP
The keys of \f(CW\*(C`%\-\*(C'\fR\-like hashes correspond to all buffer names found in the
regular expression; the keys of \f(CW\*(C`%+\*(C'\fR\-like hashes list only the names of
buffers that have captured (and that are thus associated to defined values).
.PP
This implementation has been moved into the core executable, but you
can still load this module for backward compatibility.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
perlreapi, re, "Pragmatic Modules" in perlmodlib, "%+" in perlvar,
"%\-" in perlvar.
|