[SP-pm] Remover 0x0D (aka carriage return) do final de uma linha
Luis Motta Campos
luismottacampos at yahoo.co.uk
Fri Jul 23 03:54:02 PDT 2010
On 07/22/2010 04:11 PM, Otavio Pereira wrote:
> Aproveitando o e-mail porquê
>
> $x =~ s/0x0d//g;
>
> não funciona?
>
> Alguma sugestão?
Sugiro que você RTFM(*) "perlre", onde se explica como usar notação
hexadecimal em expressões regulares.
A minha implementação da sua expressão seria mais como
s{\x0D}{}g
Ou a ainda mais legível
s{\r}{}g
O que você está fazendo de errado é negando que você tem um problema de
arquitetura nos seus programas: você lê e processa arquivos com duas
codificações diferentes (linhas terminadas com "\r\n" ou "\n" -- padrão
"Windows" ou "unix"), mas não faz nada explícito para detectar o padrão
e se comportar de acordo no seu programa. Você poderia começar assumindo
que todas as linhas que você ler de um mesmo arquivo vão estar no mesmo
formato, e partir daí.
Eu recomendo construir um Iterador flexível o bastante para repetir o
padrão para todas as linhas do arquivo, baseado em Iterator::IO::ifile,
e transformar isso numa biblioteca que você pode até subir para o CPAN.
Putamplexos
--
Luis Motta Campos is a DBA,
Perl Programmer, foodie and photographer.
(*) Querendo dizer "Read The FRIENDLY Manuals"
More information about the SaoPaulo-pm
mailing list