O script abaixo pretende, em um texto escrito com encoding "latin1", transformar caracteres<br>acentuados em suas versões mais "transportáveis" em Latex. Basicamente ele deveria ler um<br>arquivo fornecido como argumento na linha de comando e gerar um arquivo "
temp.tex" em que<br>os caracteres acentuados foram substituídos pelas convenções Latex. Ele funciona perfeitamente<br>se a primeira coluna do hash %dictionary contiver apenas ascii. Da forma que está, há a reclamação
<br>de "unrecognized character" já para o c-cedilha. Tentei colocar "use encoding 'latin1' ; " , mas não<br>funciona igualmente. <br><br>Alguém sabe como fazer isso?<br><br>Grato,<br><br>Henrique
<br><br>--------------------------------------------------------------------------------<br>#!/usr/bin/perl<br>#<br># Usar um Hash para dirigir um pattern replacement<br># Files are invoked at the command line<br>#<br># use encoding "latin1";
<br>%dictionary = (<br> ç => "\\c{c}",<br> á => "\\'a",<br> í => "\\'{\\i}",<br> é => "\\'e",<br> ó => "\\'o",
<br> ú => "\\'u",<br> ã => "\\~a",<br> õ => "\\~o",<br> â => "\\^a",<br> ê => "\\^e",<br> ô => "\\^o",
<br> ü => '\\"u',<br>);<br>$input = $ARGV[0];<br>open(INPUT,$input);<br>open(OUTPUT,">temp.tex");<br>$length = 1024;<br>$bytes_read = read(INPUT, $var ,$length);<br>while ($bytes_read > 0) {
<br> foreach $key (keys (%dictionary)) {<br> $var =~ s/$key/$dictionary{$key}/g;<br> }<br> print OUTPUT $var;<br> $bytes_read= read(INPUT, $var, $length);<br>}<br>close(INPUT);<br>close(OUTPUT);<br><br>
---------------------------------------------------------------------------------------------------