* Ranga Nathan <[EMAIL PROTECTED]> [2002-10-11 13:42]:
> I need to parse a string that has multiple occurrences of a pattern
> that is determined by an embeded count. For example:
>
> 02 s1n1 s1n2 3 s2n1 s2n2 s2n3 1 s3n1 4 s4n1 s4n2 s4n3 s4n4
>
> 02 is the count and I need to extract s1n1 and s2n2
>
> 3 is the count and I need to extract s2n1, s2n2 and s2n3
Don't use a regex:
my $s = "02 s1n1 s1n2 3 s2n1 s2n2 s2n3 1 s3n1 4 s4n1 s4n2 s4n3 s4n4";
my @s = split /\s+/, $s;
my @all = (); # holds the answer
while (@s) {
my $num = shift @s;
my @inner;
for (1 .. int($num)) {
push @inner, shift @s
}
push @all, \@inner;
}
print Dumper(\@all);
Gives:
$VAR1 = [
[
's1n1',
's1n2'
],
[
's2n1',
's2n2',
's2n3'
],
[
's3n1'
],
[
's4n1',
's4n2',
's4n3',
's4n4'
]
];
$s is the original string, @s is the split string, and @all is the list.
You'll probably want to do something other thanb push @all and print
Dumper(), of course...
(darren)
--
In the fight between you and the world, back the world.
_______________________________________________
Boston-pm mailing list
[EMAIL PROTECTED]
http://mail.pm.org/mailman/listinfo/boston-pm