Galera um bom uso para linguagem perl é o processamento de texto (excelente para manipular arquivos csv), ele pode ser usado ate mesmo via saída do terminal de forma bastante semelhante a linguagem awk. Para executar funções perl diretamente pelo terminal usamos o parâmetro -e ou -E seguido das funções e estruturas separadas por ponto e virgula (ela também deve ser colocada entre aspas)
é possivel colocar mais de um parâmetro -e
podemos redirecionar a saída usando os comandos e programas do terminal para o interpretador perl via pipe, entretanto precisamos definir o parâmetro -n para que seja lido linha a linha e executado o mesmo comando em todas as linhas
o codigo abaixo é equivalente ao anterior
em awk o código anterior seria equivalente a esse
é possivel ler linha a linha e fazer o print automaticamente bastando substituir o parâmetro -n pelo parâmetro -p
para a gente pegar a passagem naquela linha podemos usar a variável $_
outro exemplo só que dessa vez usando regex para filtrar os nomes que na segunda letra deles tem um 'o' (semelhante ao comando grep)
outra forma de fazer o comando anterior seria
é possivel usar split para recortar trechos específicos e manipular eles, exemplo separar tudo em uma array para manipular separadamente (semelhante ao comando cut)
o perl nos permite separar da mesma forma que o comando anterior de uma forma bastante simples usando o argumento -a para fazer o split e o -F seguido do delimitador (nesse caso é o ","). Para a gente acessar cada valor usamos @F e a sua posição
é possível usar a estrutura BEGIN e END para processar apenas uma vez no começo ou no fim, exemplo um contador de linha que começa ja setado com o valor 1 e vai incrementando a cada nova linha e exibindo o resultado quando terminar (wc pra que ne)
podemos usufruir de todos os recursos e módulos da linguagem perl, exemplo usando o modulo Digest::MD5 para retornar a hash dos nomes
com parâmetro o -M importamos o modulo desejado sem precisar ficar declarando ele com o use
tambem é possivel criar um script e chamar ele
no comando do script não colocamos o -e apenas o nome do script
embora os comandos digitados seja em um terminal linux o mesmo pode ser feito em outras plataformas tambem. Exemplo no prompt do windows
bom galera é isso, existem outros parâmetros que podem ser passados para o interpretador perl além dos citados \o
by kodo no kami
- Código:
perl -e ' print "perl é vida\n"; '
é possivel colocar mais de um parâmetro -e
- Código:
perl -e ' $variavel = "perl e vida"; ' -e ' print $variavel . "\n"; '
podemos redirecionar a saída usando os comandos e programas do terminal para o interpretador perl via pipe, entretanto precisamos definir o parâmetro -n para que seja lido linha a linha e executado o mesmo comando em todas as linhas
- Código:
cat texto.csv | perl -n -e ' print '
o codigo abaixo é equivalente ao anterior
- Código:
cat texto.csv | perl -ne ' print '
em awk o código anterior seria equivalente a esse
- Código:
cat texto.csv | awk ' {print} '
é possivel ler linha a linha e fazer o print automaticamente bastando substituir o parâmetro -n pelo parâmetro -p
- Código:
cat texto.csv | perl -p -e ' '
para a gente pegar a passagem naquela linha podemos usar a variável $_
- Código:
cat texto.csv | perl -n -e ' print $_ '
outro exemplo só que dessa vez usando regex para filtrar os nomes que na segunda letra deles tem um 'o' (semelhante ao comando grep)
- Código:
cat texto.csv | perl -n -e ' if($_ =~ /^.o/){ print } '
outra forma de fazer o comando anterior seria
- Código:
cat texto.csv | perl -n -e ' print if $_ =~ /^.o/ '
é possivel usar split para recortar trechos específicos e manipular eles, exemplo separar tudo em uma array para manipular separadamente (semelhante ao comando cut)
- Código:
cat texto.csv | perl -n -e ' @linha = split(",",$_); print "$linha[1]\n"'
o perl nos permite separar da mesma forma que o comando anterior de uma forma bastante simples usando o argumento -a para fazer o split e o -F seguido do delimitador (nesse caso é o ","). Para a gente acessar cada valor usamos @F e a sua posição
- Código:
cat texto.csv | perl -F"," -a -n -e ' print "@F[1]\n" '
é possível usar a estrutura BEGIN e END para processar apenas uma vez no começo ou no fim, exemplo um contador de linha que começa ja setado com o valor 1 e vai incrementando a cada nova linha e exibindo o resultado quando terminar (wc pra que ne)
- Código:
cat texto.csv | perl -ne 'BEGIN{ $cont = 1 }; END{ print "linhas: $cont \n" }; $cont++ '
podemos usufruir de todos os recursos e módulos da linguagem perl, exemplo usando o modulo Digest::MD5 para retornar a hash dos nomes
- Código:
cat texto.csv | perl -F"," -ane 'BEGIN{ use Digest::MD5 md5_hex }; print md5_hex(@F[0]) . "\n" '
com parâmetro o -M importamos o modulo desejado sem precisar ficar declarando ele com o use
- Código:
cat texto.csv | perl -F"," -M"Digest::MD5 md5_hex" -ane 'print md5_hex(@F[0]) . "\n" '
tambem é possivel criar um script e chamar ele
- Código:
#!/usr/bin/perl
print @F[0];
no comando do script não colocamos o -e apenas o nome do script
- Código:
cat texto.csv | perl -F"," -an kodo.pl
embora os comandos digitados seja em um terminal linux o mesmo pode ser feito em outras plataformas tambem. Exemplo no prompt do windows
- Código:
type texto.csv | perl -F"," -ane " print \"@F[0]\n\" "
bom galera é isso, existem outros parâmetros que podem ser passados para o interpretador perl além dos citados \o
by kodo no kami