What I want to find is the pattern earliest in the list which matches earliest in the text, where matching earlier in the text is more important than being higher up the list.
Does that mean that if multiple patterns match the text you want the one that matches at the point closest to the start of the string? Because, if so, none of the solutions given so far will do that that I can see. Even your suggested use of /foo|bar|baz/ won't do this as perl tries the patterns from left to right and gives you the one that matches first whether or not it's "earliest" in the string. I think that if you want this behavior, you'll have to loop over each pattern recording where they matched (if at all) and then select one with the lowest match position.
In reply to Re: Finding out which of a list of patterns matched
by duff
in thread Finding out which of a list of patterns matched
by lemnisca
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |