Hallo,
ich möchte ein Perl-Script per CRON regelmäßig ausführen lassen.
- Das Script kann ich via Shell ausführen, es funktioniert da einwandfrei.
- Ich kann Perl Scripte via CRON "ausführen".
Das Problem tritt dann auf, wenn ich bestimmte Module verwende. Ich habe ein ganz einfaches Script geschrieben, um mein Problem zu zeigen.
#!/usr/bin/perl -w
use strict;
use FileHandle();
use POSIX qw(locale_h strftime);
my $cmd="touch /pfad/zu/einer/datei";
my $out = `$cmd`;
Wie man sieht, ändere ich mit dem touch Befehl das Datum einer Datei. Wie gesagt, das funktioniert. Wenn ich nun ein use DBI; hinzufüge, funktioniert das ganze nicht mehr.
#!/usr/bin/perl -w
use strict;
use FileHandle();
use POSIX qw(locale_h strftime);
use DBI;
my $cmd="touch /pfad/zu/einer/datei";
my $out = `$cmd`;
Alle hier genannten Module sind standardmäßig installiert. Was ebenfalls nicht funktioniert ist das EInbinden von eigenen Modulen in einer extra CPAN Bibliothek.
#!/usr/bin/perl -w
use strict;
use FileHandle();
use POSIX qw(locale_h strftime);
BEGIN {
unshift(@INC,"/pfad/zur/cpan/lib/");
}
use HTML::Entities;
# alternativ use HTML::Entities "/pfad/zur/cpan/lib/";
my $cmd="touch /pfad/zu/einer/datei";
my $out = `$cmd`;
Der Aufruf in der CRONTAB erfolgt z.B. mit
* * * * * perl /pfad/zum/script/touch.pl
aber diese Information ist sicher irrelevant, denn das funktioniert ja prinzipiell.
Ich hoffe, dass mir jemand weiterhelfen kann, denn ich komme da nun gar nicht mehr weiter. Das ganze probiere ich unter SunOS 5.8.