[tutorial] modulo Inline::Python

Iniciado por kodo no kami, Abril 24, 2017, 04:08:21 AM

tópico anterior - próximo tópico

0 Membros e 3 Visitantes estão vendo este tópico.

kodo no kami

entao galera nesse tutorial vou ensinar como programar em python dentro da linguagem perl, para gente fazer isso vamos usar o modulo Inline::Python que deve ser baixado pelo cpan, a vantagem de usar python dentro do perl que nos permite usar varios modulos indiretamente da linguagem python, a forma mais simples de usar esse modulo seria importar o modulo no caso "Inline Python" depois finalizar o codigo perl com __END__ e depois usar __Python__ seguido do codigo em python

#!/usr/bin/perl

use Inline Python

__END__
__Python__

print "isso aqui é python"


http://i68.tinypic.com/i3s1so.jpg

lembrando que a sintaxe da linguagem perl e python são diferentes vamos ver outro exemplo usando uma função e uma estrutura condicional em python que comprova que estamos mexendo com python

#!/usr/bin/perl

use Inline Python

__END__
__Python__

def kodo_nome(n):
print "o nome digitado foi " + nome

nome = raw_input("digite seu nome: ")
kodo_nome(nome)


http://i67.tinypic.com/2d7von8.jpg

outra forma da gente escrever o codigo python é usando a função py_eval porem temos que declara o modulo de forma diferente dos exemplos anteriores sendo ele Inline::Python "py_eval"

#!/usr/bin/perl

use Inline::Python "py_eval";


depois podemos usar a função py_eval com o codigo python

#!/usr/bin/perl

use Inline::Python "py_eval";

py_eval('print "codado em python"');


http://i64.tinypic.com/4vn6ls.jpg

quando o codigo tem mais de uma linha usamos o ponto e virgula representando a quebra de linha

#!/usr/bin/perl

use Inline::Python "py_eval";

py_eval('print "codado em python";print "segunda linha"');


ou simplesmente usamos outro py_eval

#!/usr/bin/perl

use Inline::Python "py_eval";

py_eval('kodo = 315');
py_eval('print kodo');


outra forma ainda é por trechos

#!/usr/bin/perl

use Inline Python => <<"END"

kodo="python dentro de perl"
print kodo

END
;


http://i67.tinypic.com/2lv0mj9.jpg

é possivel executar codigo perl dentro do codigo python com o perl.eval

#!/usr/bin/perl

use Inline Python;

__END__
__Python__

perl.eval("$nick = 'kodo no kami'")
perl.eval("print 'apelido = ' . $nick")


http://i64.tinypic.com/oqw3si.jpg

podemos executar uma função do perl dentro do python usando perl seguido da função

#!/usr/bin/perl

use Inline Python;

sub kodosomar{
$resu = $_[0] + $_[1];
print $resu;
}

__END__
__Python__

perl.kodosomar(300,15)


ou inversamente do python dentro do perl

#!/usr/bin/perl

use Inline Python;

kodosomar(300,15);

__END__
__Python__

def kodosomar(x,y):
r = x + y
print r


um exemplo de um script que faz a requisição em um site para buscar o html usando modulo em python no caso o urllib2 e depois jogar o resultado em uma função em perl para recortar a hora por uma regex (OBS: no html do site ta escrito " <<< AVISO: NÃO USE ESTA HORA EM APLICATIVOS " kkkk vish acabei usando nesse script '-' )

#!/usr/bin/perl

use Inline Python;

sub pregex{
$texto = $_[0];

@hora = $texto =~ /<p id="relogio">(\d+:\d+:\d+)/;
print "hora certa: " . $hora[0] . "\n";
}

__END__
__Python__

import urllib2

kodo = urllib2.urlopen("http://www.horariodebrasilia.org/")
kami = kodo.read()
perl.pregex(kami)


http://i68.tinypic.com/dpv1fm.jpg

bom galera esse é basico do que se pode fazer com esse modulo e com essa combinaçao de linguagens \o

by kodo no kami

huskie

Solicito que o usuário por favor mude o tamanho máximo de largura de todas as imagens postadas de 1280 pra 400 x proporcional e edite a sua assinatura, que está 100 píxels de altura acima das regras vigentes neste forum.
Through PS4 PSXItarch v3 Linux!