If it matches, then $1 will hold the string between these words. From there on, you can calculate the number of words between them, which seems to be more or less what you're after./\blazy\b(.*?)\bdog\b/
The full sample code becomes:
This prints:while (<DATA>) { if(/\blazy\b(.*?)\bdog\b/) { my $length = length $1; my @words = grep length, split /\W+/, $1; printf "Distance is %d characters, stepping %d words\n", $length, + 1+@words; } } __DATA__ The brown fox jumps over the lazy dog The lazy brown fox jumps over the quick dog The lazy fox jumps over the dog The lazy fox dog The fox jumps over the dog...
Distance is 1 characters, stepping 1 words Distance is 32 characters, stepping 7 words Distance is 20 characters, stepping 5 words Distance is 5 characters, stepping 2 words
In reply to Re: How keep the count...
by bart
in thread How keep the count...
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |