O script abaixo pretende, em um texto escrito com encoding &quot;latin1&quot;, transformar caracteres<br>acentuados em suas versões mais &quot;transportáveis&quot; em Latex. Basicamente ele deveria ler um<br>arquivo fornecido como argumento na linha de comando e gerar um arquivo &quot;
temp.tex&quot; 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 &quot;unrecognized character&quot; já para o c-cedilha. Tentei colocar &quot;use encoding &#39;latin1&#39; ; &quot; , 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 &quot;latin1&quot;;
<br>%dictionary = (<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ç&nbsp;&nbsp; =&gt; &quot;\\c{c}&quot;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; á&nbsp;&nbsp; =&gt; &quot;\\&#39;a&quot;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; í&nbsp;&nbsp; =&gt; &quot;\\&#39;{\\i}&quot;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; é&nbsp;&nbsp; =&gt; &quot;\\&#39;e&quot;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ó&nbsp;&nbsp; =&gt; &quot;\\&#39;o&quot;,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ú&nbsp;&nbsp; =&gt; &quot;\\&#39;u&quot;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ã&nbsp;&nbsp; =&gt; &quot;\\~a&quot;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; õ&nbsp;&nbsp; =&gt; &quot;\\~o&quot;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; â&nbsp;&nbsp; =&gt; &quot;\\^a&quot;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ê&nbsp;&nbsp; =&gt; &quot;\\^e&quot;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ô&nbsp;&nbsp; =&gt; &quot;\\^o&quot;,
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ü&nbsp;&nbsp; =&gt; &#39;\\&quot;u&#39;,<br>);<br>$input = $ARGV[0];<br>open(INPUT,$input);<br>open(OUTPUT,&quot;&gt;temp.tex&quot;);<br>$length = 1024;<br>$bytes_read = read(INPUT, $var ,$length);<br>while ($bytes_read &gt; 0) {
<br>&nbsp;&nbsp; foreach $key (keys (%dictionary)) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $var =~ s/$key/$dictionary{$key}/g;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print OUTPUT $var;<br>&nbsp;&nbsp; $bytes_read= read(INPUT, $var, $length);<br>}<br>close(INPUT);<br>close(OUTPUT);<br><br>
---------------------------------------------------------------------------------------------------