in reply to How to express contents of a file as regex metachars?

If you don't mind consuming the input, you can use an anchored regex to eat the input as you generate the summary.

my %mapping = ( '[a-zA-A0-9]+' => 'A', ); my $summary = ''; CHUNK: while (length $filedata) { foreach my $reg (keys %mapping) { if ($filedata =~ s/^$reg//) { $summary .= $mapping{$reg}; next CHUNK; } } die "Chunk starting with '". substr($filedata, 0,10) . "' did not ma +tch any rules!"; }

If I'm confused as to your goal and you actually want to do the opposite of this, you can take the reverse of the %mapping hash and concatenate a big regex string by looking up the regex substring for each character in the summary in turn.

Replies are listed 'Best First'.
Re^2: How to express contents of a file as regex metachars?
by dwhite20899 (Friar) on Jun 16, 2012 at 19:54 UTC

    I think that's freaking brilliant. Using variables in regexes has always scared the pants off me, I can never get them to do what I want.

    As cavac asked, I'm building a crude lossy compression.