Are you given ABCD or are you given the position and length (or start and end) of the substring? Can the * and !'s occur anywhere? You should give a before and after sample. Something like this:
__DATA__
XXXXXXABCDXXXXXXXX
XX**XXX!!!X**AB*!C*DXX*!!!XXX**XXX
Want to print:
10 characters added
XXXXXXABCD**!!!***!*XX*!!!XXX**XXX
The following code may be a good starting point:
use strict;
use warnings;
my $match = 'ABCD';
while (<DATA>)
{
my $org = $_;
defined (my $mutated = <DATA>) or die "Missing edited line";
my $segment = substr $mutated, 0, index ($mutated, substr $match, 3,
+ 1) + 1;
my $suffix = substr $mutated, index ($mutated, substr $match, 3, 1)
++ 1;
(my $pInsert = $segment) =~ tr/*!//cd;
(my $pSegment = $segment) =~ tr/*!//d;
print length ($pInsert) . " characters added\n";
print "$pSegment$pInsert$suffix\n";
}
__DATA__
XXXXXXABCDXXXXXXXX
XX**XXX!!!X**AB*!C*DXX*!!!XXX**XXX
Note that some error checking should be added and that there are a few assumptions about the match string and what the X sequences can actually contain.
DWIM is Perl's answer to Gödel
-
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.