[tutorial] modulo Inline::Python

Postagem de conteúdo sobre programação perl
Post Reply
User avatar
Kodo no Kami
Admin
Admin
Posts: 727
Joined: Fri Jan 02, 2015 1:56 pm
Contact:

[tutorial] modulo Inline::Python

Post by Kodo no Kami » Sat Oct 08, 2016 8:57 am

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

Code: Select all

#!/usr/bin/perl

use Inline Python

__END__
__Python__

print "isso aqui é python"
Image

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

Code: Select all

#!/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)
Image

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"

Code: Select all

#!/usr/bin/perl

use Inline::Python "py_eval";
depois podemos usar a função py_eval com o codigo python

Code: Select all

#!/usr/bin/perl

use Inline::Python "py_eval";

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

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

Code: Select all

#!/usr/bin/perl

use Inline::Python "py_eval";

py_eval('print "codado em python";print "segunda linha"');
ou simplesmente usamos outro py_eval

Code: Select all

#!/usr/bin/perl

use Inline::Python "py_eval";

py_eval('kodo = 315');
py_eval('print kodo');
outra forma ainda é por trechos

Code: Select all

#!/usr/bin/perl

use Inline Python => <<"END"

kodo="python dentro de perl"
print kodo

END
;
Image

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

Code: Select all

#!/usr/bin/perl

use Inline Python;

__END__
__Python__

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

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

Code: Select all

#!/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

Code: Select all

#!/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 '-' )

Code: Select all

#!/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)
Image

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

by kodo no kami
Image

que desagradavel ~ mirai kuriyama

Post Reply

Return to “Perl”