Votre titre de la question dit que vous voulez « CP1252 » mais dans le corps de votre question, vous dites que vous voulez « Latin -1". CP1252 et Latin-1 ne sont pas la même chose. CP1252 est un encodage Microsoft basé sur Latin-1 mais avec certains des caractères que Microsoft a jugé inutiles remplacés par d'autres caractères.
Par exemple dans CP1252, l'octet 0x93 est un guillemet double gauche (") mais en latin-1 c'est un code de contrôle non imprimable.
Le codage interne de Perl est (presque mais pas tout à fait) UTF-8. Vous pouvez prendre un octet CP1252 et de le convertir en format de chaîne de caractères UTF-8 Perl comme ceci:
use Encode qw(decode);
my $char = decode("CP1252", "\x80");
caractère 0x80 CP1252 est le symbole de l'euro. En Unicode, le symbole de l'euro est U + 20AC. Donc $ $ sera défini sur "\ x {20AC}".
Votre prochain problème est que vous voulez "imprimer" les caractères. Cela pourrait signifier beaucoup de choses. Le problème est que vous devez convertir à partir de la représentation des caractères internes de Perl l'encodage attendu par votre périphérique de sortie.
Par exemple ma fenêtre de terminal Linux est heureux d'afficher UTF-8 donc je ferais ce qui suit pour imprimer le caractère Euro:
binmode(STDOUT, ':utf8');
print $char, "\n";
peu susceptible de travailler à une invite de commande Windows bien.
Si vous générez une sortie HTML, vous devez écrire UTF-8 et vous assurer que vous avez un en-tête approprié pour déclarer le codage. Cela fonctionnera avec à peu près n'importe quel navigateur publié au cours des 10-15 dernières années.