Is $string=~/((.)\2*)/g what you're looking for?
#! /usr/bin/perl -w
use Data::Dumper;
use strict;
my $string =' aaaa bbbbccccccccbbbb aaaabbbbbcdddddddddddddddd
+dddd';
my $pos=0;
my @triples=();
my @reps=$string=~/((.)\2*)/g;
while (@reps) {
my $hits=shift @reps;
my $char=shift @reps;
push @triples, [$char, $pos, length $hits];
$pos+=length $hits;
}
$Data::Dumper::Indent=0;
print Dumper @triples;
__DATA__
$VAR1 = [' ',0,4];$VAR2 = ['a','4',4];$VAR3 = [' ','8',4];$VAR4 = ['b'
+,'12',4];$VAR5 = ['c','16',8];$VAR6 = ['b','24',4];$VAR7 = [' ','28',
+3];$VAR8 = ['a','31',4];$VAR9 = ['b','35',5];$VAR10 = ['c','40',1];$V
+AR11 = ['d','41',20];
Memo to self: must learn to use Data::Dumper properly ;-)
--
Tommy
Too stupid to live.
Too stubborn to die.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.