有人可以告诉我这意味着什么吗?
if (not defined $config{'crontab'}) {
die "no crontab defined!";
}
我想打开一个文件crontab.txt,但perl脚本在此行崩溃,我真的不知道任何perl。
编辑1
它是这样的:
sub main()
{
my %config = %{getCommandLineOptions()};
my $programdir = File::Spec->canonpath ( (fileparse ( Win32::GetFullPathName($PROGRAM_NAME) ))[1] );
my $logdir = File::Spec->catdir ($programdir, 'logs');
$logfile = File::Spec->catfile ($logdir, 'cronw.log');
configureLogger($logfile);
$log = get_logger("cronw::cronService-pl");
# if --exec option supplied, we are being invoked to execute a job
if ($config{exec}) {
execJob(decodeArgs($config{exec}), decodeArgs($config{args}));
return;
}
my $cronfile = $config{'crontab'};
$log->info('starting service');
$log->debug('programdir: '.$programdir);
$log->debug('logfile: '.$logfile);
if (not defined $config{'crontab'}) {
$log->error("no crontab defined!\n");
die "no crontab defined!";
# fixme: crontab detection?
}
$log->debug('crontab: '.$config{'crontab'});
我正在尝试加载这个'crontab.txt'文件......
sub getCommandLineOptions()
{
my $clParser = new Getopt::Long::Parser config => ["gnu_getopt", "pass_through"];
my %config = ();
my @parameter = ( 'crontab|cronfile=s',
'exec=s',
'args=s',
'v|verbose'
);
$clParser->getoptions (\%config, @parameter);
if (scalar (@ARGV) != 0) { $config{'unknownParameter'} = $true; }
return \%config;
}
可能我必须给脚本一个参数
答案 0 :(得分:4)
可能我必须给脚本一个参数
我会这么说。
$ script --cronfile=somefile
答案 1 :(得分:2)
该代码查看散列'crontab'
中是否存在密钥%config
。如果没有,则调用die
并终止。
如果那不是你期望发生的事情,那么你脚本中的其他地方应该有一些设置为$config{'crontab'}
的东西,但目前你的问题中没有足够的信息来确定可能是什么。
答案 2 :(得分:1)
crontab.txt的文件路径可能在%config hash中,由'crontab'键指向,但不存在!如果是这样,DIRTY解决方案可以是:
$config{'crontab'}='FULLPATH/crontab.txt';
#if (not defined $config{'crontab'}) {
# die "no crontab defined!";
#}
但是这可能不起作用,因为有类似$ config {'prefix'}的内容,你将尝试打开的是由两者的串联表示的路径,或者只是因为$ config {'crontab'}是预期的除完整路径之外的任何其他价值!