File: README.md

package info (click to toggle)
libregexp-reggrp-perl 2.01-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 132 kB
  • sloc: perl: 1,046; makefile: 2
file content (222 lines) | stat: -rw-r--r-- 5,736 bytes parent folder | download
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# NAME

Regexp::RegGrp - Groups a regular expressions collection

<div>

    <a href='https://travis-ci.org/leejo/regexp-reggrp-perl?branch=master'><img src='https://travis-ci.org/leejo/regexp-reggrp-perl.svg?branch=master' alt='Build Status' /></a>
    <a href='https://coveralls.io/r/leejo/regexp-reggrp-perl'><img src='https://coveralls.io/repos/leejo/regexp-reggrp-perl/badge.png?branch=master' alt='Coverage Status' /></a>
</div>

# VERSION

Version 2.00

# DESCRIPTION

Groups regular expressions to one regular expression

# SYNOPSIS

    use Regexp::RegGrp;

    my $reggrp = Regexp::RegGrp->new(
        {
            reggrp          => [
                {
                    regexp => '%name%',
                    replacement => 'John Doe',
                    modifier    => $modifier
                },
                {
                    regexp => '%company%',
                    replacement => 'ACME',
                    modifier    => $modifier
                }
            ],
            restore_pattern => $restore_pattern
        }
    );

    $reggrp->exec( \$scalar );

To return a scalar without changing the input simply use (e.g. example 2):

    my $ret = $reggrp->exec( \$scalar );

The first argument must be a hashref. The keys are:

- reggrp (required)

    Arrayref of hashrefs. The keys of each hashref are:

    - regexp (required)

        A regular expression

    - replacement (optional)

        Scalar or sub.

        A replacement for the regular expression match. If not set, nothing will be replaced except "store" is set.
        In this case the match is replaced by something like sprintf("\\x01%d\\x01", $idx) where $idx is the index
        of the stored element in the store\_data arrayref. If "store" is set the default is:

            sub {
                return sprintf( "\x01%d\x01", $_[0]->{store_index} );
            }

        If a custom restore\_pattern is passed to to constructor you MUST also define a replacement. Otherwise
        it is undefined.

        If you define a subroutine as replacement an hashref is passed to this subroutine. This hashref has
        four keys:

        - match

            Scalar. The match of the regular expression.

        - submatches

            Arrayref of submatches.

        - store\_index

            The next index. You need this if you want to create a placeholder and store the replacement in the
            $self->{store\_data} arrayref.

        - opts

            Hashref of custom options.

    - modifier (optional)

        Scalar. The default is 'sm'.

    - store (optional)

        Scalar or sub. If you define a subroutine an hashref is passed to this subroutine. This hashref has
        three keys:

        - match

            Scalar. The match of the regular expression.

        - submatches

            Arrayref of submatches.

        - opts

            Hashref of custom options.

        A replacement for the regular expression match. It will not replace the match directly. The replacement
        will be stored in the $self->{store\_data} arrayref. The placeholders in the text can easily be rereplaced
        with the restore\_stored method later.

- restore\_pattern (optional)

    Scalar or Regexp object. The default restore pattern is

        qr~\x01(\d+)\x01~

    This means, if you use the restore\_stored method it is looking for \\x010\\x01, \\x011\\x01, ... and
    replaces the matches with $self->{store\_data}->\[0\], $self->{store\_data}->\[1\], ...

# EXAMPLES

- Example 1

    Common usage.

        #!/usr/bin/perl

        use strict;
        use warnings;

        use Regexp::RegGrp;

        my $reggrp = Regexp::RegGrp->new(
            {
                reggrp          => [
                    {
                        regexp => '%name%',
                        replacement => 'John Doe'
                    },
                    {
                        regexp => '%company%',
                        replacement => 'ACME'
                    }
                ]
            }
        );

        open( INFILE, 'unprocessed.txt' );
        open( OUTFILE, '>processed.txt' );

        my $txt = join( '', <INFILE> );

        $reggrp->exec( \$txt );

        print OUTFILE $txt;
        close(INFILE);
        close(OUTFILE);

- Example 2

    A scalar is requested by the context. The input will remain unchanged.

        #!/usr/bin/perl

        use strict;
        use warnings;

        use Regexp::RegGrp;

        my $reggrp = Regexp::RegGrp->new(
            {
                reggrp          => [
                    {
                        regexp => '%name%',
                        replacement => 'John Doe'
                    },
                    {
                        regexp => '%company%',
                        replacement => 'ACME'
                    }
                ]
            }
        );

        open( INFILE, 'unprocessed.txt' );
        open( OUTFILE, '>processed.txt' );

        my $unprocessed = join( '', <INFILE> );

        my $processed = $reggrp->exec( \$unprocessed );

        print OUTFILE $processed;
        close(INFILE);
        close(OUTFILE);

# AUTHOR

Merten Falk, `<nevesenin at cpan.org>`. Now maintained by LEEJO

# BUGS

Please report any bugs or feature requests through the web interface at
[http://github.com/leejo/regexp-reggrp-perl/issues](http://github.com/leejo/regexp-reggrp-perl/issues).

# SUPPORT

You can find documentation for this module with the perldoc command.

perldoc Regexp::RegGrp

# COPYRIGHT & LICENSE

Copyright 2010, 2011 Merten Falk, all rights reserved.

This program is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.