La forma profesional de hacerlo es usando
DBI, pero tendrás que asegurarte que tienes instalado
DBD::Oracle, y esto último es bastante complicado... si se hace a mano.
En las instalaciones Oracle, suele venir un directorio con un Perl propio, y con ese módulo ya compilado, así que entonces no hay que hacer ninguna instalación. Casi siempre ese Perl es muy viejo, pero para hacer consultas a la base de datos, es más que suficiente.
Según el propio
README.win32.txt, la forma más cómoda es usando el PPM de ActiveState. O bajar las fuentes por el mismo medio y compilarlas (también comentado en el txt).
Presta atención a la combinación versión_de_tu_Perl / Sistema_operativo / versión_de_Oracle. No todas las combinaciones funcionan.
Si lo consigues, tendrás acceso a las centenares de funciones que DBI+DBD::Oracle te ofrecen, entre ellas, las que solicitas en tu pregunta.
Más información (en inglés) en la página
Perl del Oracle Wiki.
Buena suerte...
(Después de todo esto, no me extraña que la gente prefiera usar MySQL o MariaDB o PostgreSQL)
En cuanto al código, se puede simplificar un poco.
Using perl Syntax Highlighting
#!C:\Perl\bin\perl.exe
# Transacciones
use strict;
use warnings;
use MIME::Lite;
use POSIX 'strftime';
my $fecha = strftime "%d-%m-%Y %H:%M:%S", localtime;
my $valor = 0 + qx(sqlplus -S usuario/pass\@tnsname \@F:\\QRY/consulta.sql);
open(LECTURA, '>>/LOG/ARGENTINA/DIF_MIN_REPLICA.csv');
if ($valor >= 12) {
my $message = MIME::Lite->new(
From => 'correo@gmail.com',
To => 'correo1@gmail.com',
Subject => 'DIF MIN REPLICA',
Data => "Minutos de desfase entre hora actual y hora de ultima transacción en réplica: $var minutos",
);
MIME::Lite->send('smtp', 'server_correo', Timeout => 60);
$message->send();
print LECTURA "$fecha ; $valor ; CRITICAL \n";
}
else {
print LECTURA "$fecha ; $valor ; OK \n";
}
close(LECTURA);