Here's some code to get you going:
c:\@Work\Perl\monks>perl -wMstrict -le
"my $s = qq{[5:0]abc\n[0:5]def\nghi\njkl\n[22:22]mno\n[6:3]pqr\nstu\n}
+;
print qq{<<$s>> \n};
;;
$s =~ s{ (\[ \d+ : \d+ \]) ([[:lower:]]{3}) }
{ make_replacement($1, $2) }xmsge;
print qq{<<$s>>};
;;
sub make_replacement {
my ($range_field, $string) = @_;
;;
my ($hi, $lo) = $range_field =~ m{ \d+ }xmsg;
return qq{$range_field$string} if $hi < $lo;
;;
return
join qq{\n},
map qq{$string\[$_]},
$lo .. $hi
;
}
"
<<[5:0]abc
[0:5]def
ghi
jkl
[22:22]mno
[6:3]pqr
stu
>>
<<abc[0]
abc[1]
abc[2]
abc[3]
abc[4]
abc[5]
[0:5]def
ghi
jkl
mno[22]
pqr[3]
pqr[4]
pqr[5]
pqr[6]
stu
>>
Still some questions to answer:
-
Is the 'abc' string portion of '[5:0]abc' always lower case? Always exactly three digits?
-
What should happen if the "range" is inverted as in '[0:5]def'? What if it is null: '[22:22]mno'?
Update: Added the '[6:3]pqr' instance.
Give a man a fish: <%-{-{-{-<
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.