For a string 'ABBBCC', I want to produce a
list ('A', 'BBB', 'CC'). That is, break
the string into pieces based on change of character.
My Perl is getting a bit rusty and I found myself struggling today with
this simple problem. Though I've found a solution, shown below, there is
probably a better way to do it, hence my question.
Apologies if this is a FAQ.
use strict;
use warnings;
my $str = 'AAABBCCCC';
# For str 'AAABBCCCC', I want to produce a list ('AAA', 'BB', 'CCCC').
# This works ... but is there a better way to do it?
my $i = 0; # $i is used to filter out the captured $1 fields
my @x = grep { ++$i % 2 } split(/(?<=(.))(?!\1)/, $str);
for my $e (@x) { print "e='$e'\n" }
-
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.
|