in reply to Re^2: regex find and replace with a twist
in thread regex find and replace with a twist

That's simple to try .. I suspect you didn't try it.

tab@music3:~/2018-0717$ cat pm.pl #!/usr/bin/perl use strict; use warnings; { my $word = '$-.%'; my $new_word = join ( '', map { "[$_]" } split '', $word ); print "$word -> $new_word\n"; } tab@music3:~/2018-0717$ perl pm.pl $-.% -> [$][-][.][%] tab@music3:~/2018-0717$

Perl doesn't care what's in the string -- more specifically, split doesn't have problems with any characters that may have special meaning in a regex.

Alex / talexb / Toronto

Thanks PJ. We owe you so much. Groklaw -- RIP -- 2003 to 2013.

Replies are listed 'Best First'.
Re^4: regex find and replace with a twist
by haukex (Archbishop) on Jul 17, 2018 at 13:01 UTC
    $-.% -> [$][-][.][%]

    Note the OP said (emphasis mine):

    I need to find any letter [a-zA-Z] and replace it

      Ugh .. I hate mis-reading the specs.

      tab@music3:~/2018-0717$ cat pm.pl #!/usr/bin/perl use strict; use warnings; { my $word = '$-.%'; my $new_word = join ( '', map { "[$_]" } split /[a-zA-Z]/, $word ) +; print "$word -> $new_word\n"; } tab@music3:~/2018-0717$ perl pm.pl $-.% -> [$-.%] tab@music3:~/2018-0717$

      In addition, I should have used // in my original call to split, as it takes a regex and not a string. Thanks for the reminder.

      Alex / talexb / Toronto

      Thanks PJ. We owe you so much. Groklaw -- RIP -- 2003 to 2013.

        join ( '', map { "[$_]" } split /[a-zA-Z]/, $word );

        Sorry, I think that's also not right:

        $ perl -wMstrict -MData::Dump -e \ 'dd join "", map { "[$_]" } split /[a-zA-Z]/, q($-.%abc&/)'; "[\$-.%][][][&/]"

        Whereas, by my understanding of the question (that does still need to be clarified), the output should be '$-.%[a][b][c]&/'.