PhillipHuang has asked for the wisdom of the Perl Monks concerning the following question:

I want to print "FACE WITH TEARS OF JOY" in command line mode:
#!/usr/bin/perl use charnames ':full'; print "\N{FACE WITH TEARS OF JOY}\n";

while it prints:

Wide character in print at print_face.pl line 3. 😂
When I try to print "WHITE SMILING FACE", ☺ can be shown. How can I print above "FACE WITH TEARS OF JOY"?

Replies are listed 'Best First'.
Re: How to print "FACE WITH TEARS OF JOY" in command line?
by moritz (Cardinal) on Mar 13, 2012 at 08:28 UTC
      Or, since the question is about the command line, using -CO as argument to perl.

        Almost correct: C2 not C0. And with perl-5.16, you don't even need to load charnames ☺

        % bleadperl -C2 -E'say"\N{FACE WITH TEARS OF JOY}"'
        😂

        Enjoy, Have FUN! H.Merijn
Re: How to print "FACE WITH TEARS OF JOY" in command line?
by Eliya (Vicar) on Mar 13, 2012 at 08:32 UTC

    As you can render the one smilie, but not the other, I'd say your font has no glyph for that extended emoticon (U+1F602).

    Also, you want to tell Perl that your output device can handle UTF-8, e.g. using binmode STDOUT, ":utf8".  That would get rid of the "Wide character in print" message.

      When I check the system's charmap by searching with key '1F602', nothing is found. Now I know if want to print clearly unicode character, there must be related font or glyph in the charmap. Thanks for your kindly help.
Re: How to print "FACE WITH TEARS OF JOY" in command line?
by tobyink (Canon) on Mar 13, 2012 at 09:14 UTC
    #!/usr/bin/perl length q chmod lc and print chr ord qq q q and print chr ord q q eq and print chr oct hex ord uc q eval ge and print chr oct oct hex ord qw q die q and print chr oct oct hex ord qw q do q and print chr oct oct hex ord qw q die q and print chr oct oct hex ord qw q die q and print chr oct oct hex ord qw q die q and print chr oct oct ord uc qw q ge q and print chr length q binmode glob and print chr ord q q eq and print chr oct hex ord q m alarm and print chr ord q q q and print chr oct oct hex ord q chr uc and print chr ord q q q and print chr ord q q eq and print chr ord q q eq and print chr oct oct hex ord q chop uc and print chr ord q q eq and print chr oct oct oct ord uc q cmp my lc and print chr length q binmode glob and print chr oct ord qw q do q and print chr oct hex ord q q x eq and print chr oct oct ord uc qw q for q and print chr oct oct oct ord q open do and print chr ord q q eq and print chr ord q q eq and print chr ord q q eq and print chr oct oct oct ord q split -s and print chr oct oct ord uc qw q fcntl q and print chr oct oct oct ord uc qw q m q and print chr oct ord qw q do q and print chr length q binmode glob and print chr ord q q eq and print chr oct hex ord q q eq and print ch +r oct ord uc q chr say getprotoent state time uc and print chr oct ord u +c q chop uc and print chr ord q q eq and print chr ord uc q lc eval and print chr ord q q q and print chr oct ord uc q chr uc and print chr oct ord uc q chop eq uc and print chr oct oct oct ord uc qw q m q and print chr length q binmode glob and print chr ord q q q and print chr ord q q eq and print chr oct hex ord uc q eval x ne and print chr ord qq q flock q and print chr oct hex ord uc q eval ge and print chr oct hex ord uc qw q y q and print chr oct oct ord uc qw q grep q and print chr ord q q eq and print chr oct oct ord uc qw q gt q and print chr length q continue vec and print chr ord q q eq and print chr ord qq q q and print chr ord qq q q and print chr oct oct hex ord qw q die q and print chr oct hex ord uc qw q y q and print chr oct hex ord uc q my m and print chr oct hex ord uc q my m and print chr oct oct hex ord qw q dump q and print chr ord q q q and print chr length q continue vec and print chr ord q q q and print chr ord q q q and print chr ord q q q and print chr ord q q eq and print chr oct oct hex ord qw q do q and print chr ord q q eq and print chr oct oct hex ord qw q die q and print chr length q continue vec and print chr length q closedir vec;
    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
Re: How to print "FACE WITH TEARS OF JOY" in command line?
by JavaFan (Canon) on Mar 13, 2012 at 09:37 UTC
    Really? That snippets prints 😂? That seems ... unlikely.

      Well, it's presuambly the cut-n-paste mechanics / the browser "having been helpful" in having automatically HTML-entity-encoded the character when pasting it into the browser's text area, not knowing that PerlMonks' code tags sections will simply show the entity encoding literally as is.  (128514 decimal is (U+)1F602 hex)

Re: How to print "FACE WITH TEARS OF JOY" in command line?
by locked_user sundialsvc4 (Abbot) on Mar 13, 2012 at 22:08 UTC