# NAME Regexp::RegGrp - Groups a regular expressions collection
# 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( '',