Mostrando postagens com marcador perl. Mostrar todas as postagens
Mostrando postagens com marcador perl. Mostrar todas as postagens

sexta-feira, 4 de setembro de 2015

Perl - Leitura de Arquivo Gerado no Windows

Os arquivos texto gerados no Windows/DOS normalmente terminam por '\r\n', o que pode ser um problema. Para tratar esta situação pode-se usar uma expressão regular:

$registro =~ s/\r//g;

Exemplo:

while ($registro = <STDIN>) {
   $registro =~ s/\r//g;
   chomp($registro);
}

PS. Valeu Dárcio!

terça-feira, 17 de junho de 2014

Perl - Eliminar Carriage Return e o Line Feed de arquivos

Existem situações em que devemos eliminar um Carriage Return (CR ou \r ou 0A) e um Line Feed (LF ou \n ou 0D) de um arquivo.

Um exemplo fazendo isto em Perl:

#!/usr/bin/perl -w
while (my $linha = <>) {
if ($linha =~ /[0-9]\x0D\x0A/) {
chop $linha; 
chop $linha

print $linha;
}; 
exit;

No exemplo acima, o Carriage Return e o Line Feed somente são excluídos quando forem precedidos por um número.

terça-feira, 25 de junho de 2013

Remoção de NEWLINE no meio de arquivo

Script AWK para remover caracteres 'newline' do meio de uma linha, a partir de um arquivo compactado e gerando um novo arquivo compactado:

gzip -dc arquivo.Z | awk -F'^' 'BEGIN{c=1}$0!=""{printf("%s",$0); if(NF+c>=243){printf("\n");c=1}else{c=NF}}' | gzip > arquivosaida.txt.gz

Versão em Perl

gzip -dc arquivo.Z | perl -e '$c=1;while(<STDIN>){$_=~s/\r|\n//g; if($_!=""){ @a = split("\\^", $_); print $_; if(($#a)+$c>=243){print "\n";$c=1}else{$c=$#a+1} }}' | gzip > arquivosaida.txt.gz


Agradecimentos ao sempre presente (nerd) Jorge Amorim !!

quinta-feira, 11 de outubro de 2012

Perl - Incluir diretorios ao @INC

O perl utiliza o array de ambiente @INC, que contém os diversos diretórios, para procurar os pacotes perl instalados.

Para acrescentar diretório(s) a este array (que na verdade é inacessível) podem ser utilizados 3 métodos:

1) Utilização da variável de ambiente PERL5LIB

Esta variável de ambiente assemelha-se a variável PATH e pode conter uma lista de diretórios.
O perl ao iniciar a execução de um programa acrescenta ao array @INC  o contéudo desta variável.

Sintraxe:
Linux/Unix/MacOsX
export PERL5LIB=/path/to/1:/path/to/2

Windows
set PERL5LIB=<unidade>:\path\to\1;<unidade>:\path\to\2


2) Comando use lib

Incluir no início do script/programa perl o comando use lib fará com que o perl acrescente ao array @INC este caminho.

Sintaxe:

use lib '/home/foobar/code';
use My::Module;

Observe que o use lib deve ser usado antes do use dos pacotes/módulos.

3) Executar o script com a opção -I

Ao executar o script usando o comando perl, passar o parâmetro -I (i maiúsculo) com o caminho desejado. O diretório será então adicionado ao array @INC apenas para a execução deste script.

Sintaxe:
perl -I /path/to/module script.pl