J'ai écrit un script perl test.pl qui utilise un sous-programme écrit dans un autre fichier testant .pm. Je suis en mesure d'exécuter ce script avec succès manuellement, mais quand je lance le même script sur crontab, je reçois l'erreur suivante
Can't locate testing.pm in @INC
J'ai changé les autorisations des deux fichiers d'autorisation d'exécution et utilisé "use testing"
en haut du script. Comment puis-je exécuter le script avec succès sur crontab.Comment exécuter un script perl sur crontab
Crontab : */2 * * * * PERL5LIB=$PERL5LIB:/home/test/testing.pm /home/test/test.pl > /home/test/test.log 2>&1
**
test.pl
#!/usr/bin/perl -w
use DBI;
use warnings;
use Time::Piece;
use HTML::Entities;
use lib '/home/test';
use testing
# Connecting to the database #
my $dbh = DBI->connect("DBI:mysql:database=test;host=localhost;mysql_socket=/var/run/mysqld/mysqld.sock","root","password", {'RaiseError' => 1});
# my $dob = '2009-04-21 00:00:00';
my $dob = '2009-04-22 00:00:00';
#my $dob = localtime->strftime('%Y-%m-%d %H:%M:%S');
print "\ndob : $dob\n";
$name="test";
$number=1;
$email="[email protected]"
$id="123";
if ($mail==0)
{
send_msg(0,$name,$number,$email,$aid);
}
if ($sms==0)
{
send_msg(1,$name,$number,$email,$id);
}
}
sub send_msg {
my ($type,$name,$number,$email,$id) = @_;
$sql7 = "select Sms,email from settings where Id='$id'";
$sth7 = $dbh->prepare($sql7);
$sth7->execute
or die "SQL Error: $DBI::errstr\n";
my ($sms,$email)=$sth7->fetchrow_array();
my $xml=testing::xml($type,$name,$number,$email,$sms,$email);
}
**
Ceci est un sous-ensemble de la question à http://stackoverflow.com/questions/753670/why-cant-my-perl-script-load-a-module-when-run-by-cron?rq=1 – amon
juste une suggestion 'use strict;' – Ganesh
@Ganesh use strict - Comment cela affecte-t-il l'exécution sur crontab – Rudra