in reply to Word Pairs and Lines

Interesting ... I had to waste some time on this one. ;)

Now then, if you do perform a $word =~ s/\W//g; on the entire sentance, how do you know when the sentance ends? You have to keep some punctuation around. Anyways, try this out. Hopefully some other monks will have better answers for you, but this is a simple approach.

#!/usr/bin/perl -l use strict; use warnings; use Data::Dumper; my $data = do {local $/;<DATA>}; my @sent = split /[.!?]\B/,$data; my @parsed; for my $i (0 .. $#sent) { next if $sent[$i] =~ /^$/; my @word = map $_ || (), split /\s+/,$sent[$i]; for (my $j = 0; $j < @word; $j += 2) { push @{ $parsed[$i] }, [ $word[$j], $word[$j+1] ]; } } print Dumper \@parsed; # second pair from second sentance (should be 'a test') print join ' ', @{$parsed[1]->[1]}; __DATA__ This is Joe. This is a test. This is not a test. Blah blah isn't this fun? I wish you were here! Nah ...

jeffa

L-LL-L--L-LL-L--L-LL-L--
-R--R-RR-R--R-RR-R--R-RR
B--B--B--B--B--B--B--B--
H---H---H---H---H---H---
(the triplet paradiddle with high-hat)