这个perl崩溃是什么意思?

时间:2011-11-30 03:05:15

标签: perl

有人可以告诉我这意味着什么吗?

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;
}

可能我必须给脚本一个参数

3 个答案:

答案 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'}是预期的除完整路径之外的任何其他价值!