Я написал скрипт perl test.pl, который использует подпрограмму, написанную в другом тестировании файлов .pm. Я могу запустить этот сценарий успешно вручную, но когда я запускаю тот же сценарий на кронтабе, я получаю следующее сообщение об ошибке
Can't locate testing.pm in @INC
Я изменил разрешение обоих файлов для выполнения разрешения и использовал "use testing"
в верхней части скрипта. Как я могу успешно запустить скрипт на crontab.Как выполнить скрипт perl на 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);
}
**
Это подмножество вопроса на http://stackoverflow.com/questions/753670/why-cant-my-perl-script-load-a-module-when-run-by-cron?rq=1 – amon
только одно предложение 'use strict;' – Ganesh
@Ganesh use strict - Как это влияет на выполнение на crontab – Rudra