Oh, you know what, I thought it might be a good idea
to throw some negative case data into the mix. This
is what I came up with:
<code>
#!/usr/bin/env perl6
use strict;
my @Data = '<TASK type="A">Mission A',
' <NAME type="P">Peter Meter</NAME>',
' <NAME type="P">John Deer</NAME>',
' <NAME type="P">Sam Horse</NAME>',
'</TASK>',
'',
'<REJECT type="A">Mission A',
' <NAME type="P">Tom</NAME>',
' <NAME type="P">Dick</NAME>',
' <NAME type="P">Harry</NAME>',
'</TASK>',
'',
'<TASK type="D">Mission D',
' <NAME type="P">Sol Wheat</NAME>',
' <WHAT type="P">Micky Mouse</NAME>',
' <NAME type="P">Ted Moon</NAME>',
'</TASK>';
# for @Data -> $Line { say "$Line"; }
my $TaskTag = 0;
for @Data -> $Line {
if $Line.contains( "\<TASK type" ) { $TaskTag = 1; }
elsif $Line.contains( "/TASK" ) { $TaskTag = 0; }
elsif ( $TaskTag == 1 ) && ( $Line.contains( "\<NAME type" ) ) {
( my $Name = $Line) ~~ s/.*?\>//;
$Name ~~ s/\<.*//;
say $Name;
}
}
</code>
$ ./XMLSub.pl6
Peter Meter
John Deer
Sam Horse
Sol Wheat
Ted Moon
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I am Windows
I am the Blue Screen of Death
No one hears your screams
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~