#!/usr/bin/env perl

use utf8;
use 5.10.0; # For Say

use Encode;

sub encode_subject_1 {
    my $subject = shift;
    
    $subject = decode('MIME-Header', $subject);
    $subject = encode('MIME-Header', $subject);
    
    return $subject;
}

sub encode_subject_2 {
    my $subject = shift;
    
    $subject = encode('MIME-Header', $subject);
    
    return $subject;
}

my $subject = 'perl Jügend 遺跡発見 áéíóú 遱葑癱覂';

my $subject_encoded = encode('MIME-Header', $subject);

my $version1_string = encode_subject_1($subject);
my $version1_mime = encode_subject_1($subject_encoded);

my $result1 = ($version1_string eq $version1_mime) ? "encode_subject_1 works" : "encode_subject_1 fails";
say $result1;

my $version2_string = encode_subject_2($subject);
my $version2_mime = encode_subject_2($subject_encoded);

my $result2 = ($version2_string eq $version2_mime) ? "encode_subject_2 works" : "encode_subject_2 fails";
say $result2;

# So, we could either properly document that we are expecting $subject to always be a string and never 
# pre-encoded as a MIME-Header and then remove the decode line.. or we could leave the decode line in 
# and forgive the developer who passes in the unexpected ;)
