in reply to regex help

(Further to kcott's reply:)

kelscat18: Not only does the substitution you show in the OP select the wrong strings when used with grep, it changes them and also changes strings in the input array.

>perl -wMstrict -le "my @lines = qw(aaa 111 a2a2 a2==a2 aa==aa); printf '@lines before: '; printf qq{'$_' } for @lines; print ''; ;; my @words = grep(s/[^a-zA-Z0-9]/ /g, @lines); printf '@lines after: '; printf qq{'$_' } for @lines; print ''; printf '@words: '; printf qq{'$_' } for @words; print ''; " @lines before: 'aaa' '111' 'a2a2' 'a2==a2' 'aa==aa' @lines after: 'aaa' '111' 'a2a2' 'a2 a2' 'aa aa' @words: 'a2 a2' 'aa aa'