I'm trying to convert a perl script to a executable file with PAR::Packer pp with the command (Windows 7 64 bits):
"pp -o teste.exe gmail_att.pl"
but i'm receiving the message:
"# Use of runtime loader module Module::Runtime detected. Results of static scanning may be incomplete."
I search for this message on the internet but without success
The script:
printf("Iniciando o envio de e-mails... \n");
use strict;
use Try::Tiny;
use IO::All;
use Email::MIME;
use Email::Sender::Simple qw(sendmail);
use Email::Sender::Transport::SMTP::TLS;
use Spreadsheet::XLSX;
use File::Basename;
my $diretorioScript = dirname(__FILE__);
my $excel = Spreadsheet::XLSX->new( "$diretorioScript\\jofalista.xlsx", );
my $diretorio = "$diretorioScript\\arquivos\\";
my $email = "";
my $nome = "";
opendir(diretorio, "$diretorio");
my @lista = readdir(diretorio);
closedir(diretorio);
foreach my $arquivo(@lista)
{
$email = "";
$nome = "";
if ($arquivo ne "." && $arquivo ne ".."){
# print $arquivo;
# rotina para buscar dentro do arquivo xls qual o email
# de destino do arquivo
foreach my $sheet ( @{ $excel->{Worksheet} } ) {
$sheet->{MaxRow} ||= $sheet->{MinRow};
foreach my $row ( $sheet->{MinRow} .. $sheet->{MaxRow} ) {
$sheet->{MaxCol} ||= $sheet->{MinCol};
foreach my $col ( $sheet->{MinCol} .. $sheet->{MaxCol} ) {
my $cell = $sheet->{Cells}[$row][$col];
if ($cell) {
#printf( "( %s == %s ) \n", "$cell->{Val}.pdf", $arquivo );
if("$cell->{Val}.pdf" eq $arquivo){
$nome = $cell->{Val};
my $emailCell = $sheet->{Cells}[$row][$col+1];
$email = $emailCell->{Val};
#printf("%s", $email);
}
#printf( "( %s , %s ) => %s\n", $row, $col, $cell->{Val} );
}
}
}
}
if($email ne ""){
printf("Processando o arquivo $arquivo para o email: $email \n");
# Create and array of email parts.
# Here i have 2 attachments ( an image and a pdf file) and a text message.
my @parts = (
Email::MIME->create(
attributes => {
filename => "$arquivo",
content_type => "application/pdf",
encoding => "base64",
disposition => "attachment",
name => "$arquivo",
},
body => io( "$diretorio$arquivo" )->all,
),
Email::MIME->create(
attributes => {
content_type => "text/html",
},
body => "Ola $nome este é um e-mail teste da JOFA",
)
);
# Create the email message object.
my $email_object = Email::MIME->create(
header => [
From => '[email protected]',
To => $email,
Subject => "Certificado $nome",
content_type =>'multipart/mixed'
],
parts => [ @parts ],
);
# Create the transport. Using gmail for this example
my $transport = Email::Sender::Transport::SMTP::TLS->new(
host => 'smtp.gmail.com',
port => 587,
username => '[email protected]',
password => ''
);
# send the mail
try {
sendmail( $email_object, {transport => $transport} );
} catch {
warn "Email sending failed: $_";
};
}
}
}
printf("Pressione ENTER para Finalizar... \n");
chomp( my $input = <STDIN> );
I solved the problem during compilation using the -x param on
"pp -o -x teste.exe gmail_att.pl"
But now i have another problem, that my exe access a xlsx file and it's trying to find it inside exe. The error message:
Iniciando o envio de e-mails... IO error: opening script\jofalista.xlsx for read : No such file or directory at C:/strawberry/perl/vendor/lib/PAR.pm line 636. Cannot open script\jofalista.xlsx as Zip archive at Spreadsheet/XLSX.pm line 33.