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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~