Desconozco, en ese texto, dónde está el carácter 'gordo' en formato utf8, pero supongamos que está.
El tema es que te falta un detalle. Verás: usas el pragma 'open' para indicar que los ficheros abiertos a partir de ahora, en lectura y escritura, deben hacerlo con el
layer 'utf8' para considerar que queremos que los ficheros vayan en esa codificación.
Pero... se nos olvidó que el STDOUT ya estaba abierto... cuando haces el print, lo haces hace el STDOUT. Por defecto, Perl usa siempre la codificación Latin1 (o iso-8859-1). Lo que hay que hacer es indicar que queremos la salida también en esa codificación.
En tu código, se puede hacer de dos maneras básicas (
hay más):
1. Agregando use
open ':std'; detrás del
use open .... Esto hace que los manipuladores de ficheros estándar (STDIN, STDOUT y STDERR) se incluyen en la codificación que indicas en el
pragma open anterior.
Using perl Syntax Highlighting
use open IO
=> ":utf8";
use open ':std';
open my $H1, q{<}, 'file.txt';
$text = <$H1>;
close $H1;
print $text;Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
2. Poner un
binmode(STDOUT, ':utf8'); antes del print. Eso hace el cambio de codificación del manipulador de salida.
Using perl Syntax Highlighting
use open IO
=> ":utf8";
binmode STDOUT, ':utf8';
open my $H1, q{<}, 'file.txt';
$text = <$H1>;
close $H1;
print $text;Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Más información en la página del
pragma open.