Rather than index, which will not accept a pattern, use a character class in a capturing regex, match globally in a while loop and use the @- array, see perlvar. Note that a hyphen (-) in a character class has to be the first or last character or it will be interpreted as a range constructor, e.g. [a-z].
$ perl -E ' > $line = > q{The line, as specified, has: no digits (0 to 9); letters!}; > say qq{>$1< found at $-[ 0 ]} while > $line =~ m{([ (),.;:?!-])}g;' > < found at 3 >,< found at 8 > < found at 9 > < found at 12 >,< found at 22 > < found at 23 >:< found at 27 > < found at 28 > < found at 31 > < found at 38 >(< found at 39 > < found at 41 > < found at 44 >)< found at 46 >;< found at 47 > < found at 48 >!< found at 56 $
I hope this is helpful.
Cheers,
JohnGG
In reply to Re: index regex
by johngg
in thread index regex
by welle
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |