#!/usr/bin/perl
use strict;
use warnings;
use utf8; # allows 'ñ' to appear in the source code
use Encode;
my $word = "Español"; # the 'ñ' is permitted because of the 'use utf8' pragma
# Convert the string to its UTF-8 equivalent.
my $utf8_word = Encode::encode("UTF-8", $word);
# Use 'utf8::decode' to convert the string back to internal form.
my $word_again_via_utf8 = $utf8_word;
utf8::decode($word_again_via_utf8); # converts in-place
# Use 'Encode::decode' to convert the string back to internal form.
my $word_again_via_Encode = Encode::decode("UTF-8", $utf8_word);
# Do the two conversion methods produce the same result?
# Prints 'Yes'.
print $word_again_via_utf8 eq $word_again_via_Encode ? "Yes\n" : "No\n";
# Do we get back the original internal string after converting both ways?
# Prints 'Yes'.
print $word eq $word_again_via_Encode ? "Yes\n" : "No\n";
IyEvdXNyL2Jpbi9wZXJsCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OyAgIyBhbGxvd3MgJ8OxJyB0byBhcHBlYXIgaW4gdGhlIHNvdXJjZSBjb2RlCgp1c2UgRW5jb2RlOwoKbXkgJHdvcmQgPSAiRXNwYcOxb2wiOyAgIyB0aGUgJ8OxJyBpcyBwZXJtaXR0ZWQgYmVjYXVzZSBvZiB0aGUgJ3VzZSB1dGY4JyBwcmFnbWEKCiMgQ29udmVydCB0aGUgc3RyaW5nIHRvIGl0cyBVVEYtOCBlcXVpdmFsZW50LgpteSAkdXRmOF93b3JkID0gRW5jb2RlOjplbmNvZGUoIlVURi04IiwgJHdvcmQpOwoKIyBVc2UgJ3V0Zjg6OmRlY29kZScgdG8gY29udmVydCB0aGUgc3RyaW5nIGJhY2sgdG8gaW50ZXJuYWwgZm9ybS4KbXkgJHdvcmRfYWdhaW5fdmlhX3V0ZjggPSAkdXRmOF93b3JkOwp1dGY4OjpkZWNvZGUoJHdvcmRfYWdhaW5fdmlhX3V0ZjgpOyAgIyBjb252ZXJ0cyBpbi1wbGFjZQoJCiMgVXNlICdFbmNvZGU6OmRlY29kZScgdG8gY29udmVydCB0aGUgc3RyaW5nIGJhY2sgdG8gaW50ZXJuYWwgZm9ybS4KbXkgJHdvcmRfYWdhaW5fdmlhX0VuY29kZSA9IEVuY29kZTo6ZGVjb2RlKCJVVEYtOCIsICR1dGY4X3dvcmQpOwoKIyBEbyB0aGUgdHdvIGNvbnZlcnNpb24gbWV0aG9kcyBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdD8KIyBQcmludHMgJ1llcycuCnByaW50ICR3b3JkX2FnYWluX3ZpYV91dGY4IGVxICR3b3JkX2FnYWluX3ZpYV9FbmNvZGUgPyAiWWVzXG4iIDogIk5vXG4iOwoKIyBEbyB3ZSBnZXQgYmFjayB0aGUgb3JpZ2luYWwgaW50ZXJuYWwgc3RyaW5nIGFmdGVyIGNvbnZlcnRpbmcgYm90aCB3YXlzPwojIFByaW50cyAnWWVzJy4KcHJpbnQgJHdvcmQgZXEgJHdvcmRfYWdhaW5fdmlhX0VuY29kZSA/ICJZZXNcbiIgOiAiTm9cbiI7Cg==