Funções de C/C++ sendo executadas em Perl

Funções de C/C++ sendo executadas em Perl
Sem dúvida, a linguagem C é uma das mais importantes para o desenvolvimento da informática de modo geral.
Perl é ótimo quando se trata de Redes/Segurança da Informação e Manipulação de textos.

É possível usar linguagem C em seus scripts Perl. Aqui na Insecuritynet temos uma vasta biblioteca de funções em C utilizada para a construção do Insecuritynet 3.X, tudo pode ser aproveitado em scripts Perl sem a necessidade de ser reprogramado.
Vamos ver passo a passo como isto é feito

Clique aqui para baixar todos os códigos presentes no tutorial

1) Programando em C

Se você não conhece a linguagem C, clique aqui e baixe o Dev C/C++.
É o compilador que irá transformar seus códigos em um aplicativo.

Vamos criar uma simples função que soma dois números:

Abra o DEV C/C++ e entre em:
Arquivo -> Novo -> Arquivo Fonte



Copie este código no programa:

#include <stdio.h>
#include <conio.h>
#include <windows.h>

int main() {
int a = 20;
int b = 30;
int x = a + b;

printf ("%d + %d = %d",a,b,x);

system ("pause > nul");

}

Clique em compilar e salve o programa como “primeiro_programa”

 

Clique no programa que você criou:

 

 

2-) Programando em Perl

Se você não conhece a linguagem Perl, clique aqui e baixe o Active Perl.
É o ativador que irá transformar seus códigos em um aplicativo.
Baixe tambem o Notepad++, irá te auxiliar a manipular códigos.

Vamos criar um simples "ola mundo"
Depois de instalado o Active Perl e o Notepad++, abra o Notepad++ e copie este código:

#!/usr/local/bin/perl
print "Ola Mundo!";
system "pause > nul";


Salve o script como “primeiro_programa_perl.pl”
 


Execute o script que você criou
 
 



3-) Criando um DLL em C

Vamos fazer com que a função feita em linguagem C funcione sobre o script Perl.
Para isto devemos colocar a função compilada dentro de uma DLL
Para criar a DLL, abra o DEV C/C e entre em:

Arquivo -> novo -> Projeto-> DLL
Salve com o nome “minha_dll”

 

Note que agora temos duas abas:

dllmain.cpp  e dll.h

 

Na aba “dllmain.cpp” copie este código:

#include "dll.h"
#include <windows.h>

extern "C" __declspec(dllexport) int __stdcall funcao_somar_numeros(int a, int b)
{
    int i = 0;
    i = a + b;
    

    return i;
}


Na aba “dll.h” copie este outro código:

#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */

extern "C" __declspec(dllexport) int __stdcall funcao_somar_numeros(int a, int b);

#endif

Clique em salvar, nas duas abas:

 

Agora compile seu projeto:

 

Agora você tem sua DLL

 

4-) "Lendo" a DLL dentro do Perl

Agora vamos carregar a função soma que está na DLL em nosso Perl Script.
Copie o arquivo “minha_dll.dll” para o diretorio onde se encontra seu Script Perl.

 

Vamos editar nosso Perl Script

 

Copie este codigo:

#!usr/bin/perl -w

print "Ola Mundo! \n";

use Win32::API;

my $a = 5;
my $b = 3;

  Win32::API->Import('minha_dll', 'int funcao_somar_numeros(int a, int b)',);  
  my $resultado= funcao_somar_numeros($a, $b);
 
  print "$a + $b = $resultado";
 
system "pause > nul";

Execute seu Perl Script


 

Veja que a os números foram somados e a função que fez a soma está na DLL.

Este tutorial foi bem superficial, sem detalhes dos código, a intenção é apenas mostrar que as duas linguagens podem interagir entre si, e isto acaba abrindo um grande leque de possibilidades, por exemplo:
Você pode criar Web-sites com Perl (assim como é feito com PHP), sendo assim você pode transformar um programa feito em C em um serviço online de forma muito simples.
Gostaria de aprender mais sobre programação em Perl, conheça nosso Curso PPAS.

  • 13/09/2015

  • by Insecuritynet

Compartilhar

logo