"It doesn't work" is seldom a useful problem description. After fixing term1 and term2 in the OPed code to be valid scalar identifiers, here's what I get:
This is almost your desired output except that 'Model-V' becomes 'Model V' instead of 'model-V', which I hope you can live with. :)c:\@Work\Perl\monks>perl -w -le "$term1 = 'Tesla S|Tesla model V|Tesla model|TESLA'; $term2 = 'Ford RAM truck|2020 Ford Mustand|Ford ranger|Ranger|ford|20 +20 Ford F-250|2020 Ford F250|Ford F 250'; $term1 =~ s/\-/ /g; $term2 =~ s/\-/ /g; $input = '... 2020 Ford F 250 is great but I prefer Tesla Model-V ... + '; ;; $input =~ s/\-/ /g; ;; $input =~ s/($term1)/\<1\>\<$1\>/ig; $input =~ s/($term2)/\<2\>\<$1\>/ig; ;; print $input; " ... <2><2020 Ford F 250> is great but I prefer <1><Tesla Model V> ...
The root problem might have been more clear had you provided an SSCCE (see Short, Self-Contained, Correct Example) to show the code and the resulting error messages.
Give a man a fish: <%-{-{-{-<
In reply to Re: Matching terms in text
by AnomalousMonk
in thread Matching terms in text
by rajaman
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |