in reply to replace some emoticons - search pattern needed

But I am unable to find the right unicode search-pattern.
Your patterns look ok. You just need to open STDIN in ':encoding(utf-8)' mode. Use binmode or use open pragma.
#!/usr/bin/perl use strict; use warnings; use utf8; use charnames ':full' # STDIN, STDOUT, STDERR and all opened files are utf-8 use open qw( :encoding(utf-8) :std ); ...

Replies are listed 'Best First'.
Re^2: replace some emoticons - search pattern needed
by marek1703 (Acolyte) on Dec 19, 2014 at 09:26 UTC

    Thank you for your reply! For the first time my search succeeded! But if I try to replace it with my LaTeX-code, it is not working anymore! And this is the crucial question: I need to replace every emoticon with a small icon!

    But the search is succeeding in a "buggy" way ... Only two attempts worked:

    while(<>) { foreach (/\N{FACE THROWING A KISS}/g) {print "hurray! And here is your + emoticon!\n"}; }

    And putting the emoticon directly in. Here once again my Perl-Filter:

    #!/usr/bin/perl use strict; use warnings; use utf8; use charnames ':full'; use open qw( :encoding(utf-8) :std ); # while(<>) { # Not working # s!\N{FACE THROWING A KISS}!\\includegraphics[height=15pt]{/Users/m +step/Documents/private_txt/anette/pix/emo01.png}!g; # } # while(<>) { # Not working # s!&#128536;!\\includegraphics[height=15pt]{/Users/mstep/Documents/ +private_txt/anette/pix/emo01.png}!g; # } # while(<>) { # foreach (/\x{0020}/g) {print "hurray!\n"}; # this is working! (Searc +hes for a space!) # } # while(<>) { # foreach (/\N{FACE THROWING A KISS}/g) {print "hurray! And here is yo +ur emoticon!\n"}; # this is working!!! # } # while(<>) { # foreach (/&#128536;/g) {print "hurray! And here is your emoticon!\n" +}; # this is working!!! # } # while(<>) { # foreach (/\x{D83D}\x{DE18}/g) {print "hurray! And here is your emoti +con!\n"}; # this is not working! # } # while(<>) { # foreach (/\x{3DD8}\x{18DE}/g) {print "hurray! And here is your emoti +con!\n"}; # this is not working! # } # while(<>) { # foreach (/\N{U+D83DDE18}/g) {print "hurray! And here is your emotico +n!\n"}; # this is not working! # } # while(<>) { # foreach (/\N{U+D83D}\N{U+DE18}/g) {print "hurray! And here is your e +moticon!\n"}; # this is not working! # }
      echo "😘 🚕" | perl -CSD -nE 'printf "%x\n", ord $1 while m{(.)}g'

      suggests that the hex code for the face is 1f618 and for the taxi is 1f695

      (-CSD is the command-line equivalent of use open...)
      But if I try to replace it with my LaTeX-code, it is not working anymore!
      Post your code then...

      echo "😘 🚕" | perl -CSD -pE 's/\x{1f618}/some_latex_code/'

      output:

      some_latex_code 🚕

        Wow! That's really impressing, what you do with your shell. Suppose I have to read perlrun to learn all this stuff!
        Finally I understood, for what I have to search: \x{1f618} !!! But why my replacement is not working?
        I am stumbled! marek

        while(<>) { # foreach (/\x{1f618}/g) {print "hurray! And here is your emoticon!\n" +}; # this is working!!! # foreach (/\x{1f695}/g) {print "hurray! And here is your emoticon!\n" +}; # this is working!!! This is for the taxi s/\x{1f618}/latex_code/g; }