Переменная не расширяется - PullRequest
0 голосов
/ 12 мая 2019

Переменная не подставляется

Даже после явного определения переменной 2 она не подставляется

sub updatekey{
    my $key_url = File::Spec->catfile($dir. "/keys/cert.key.$label.$type")        
    $eol = '';
    open(FILE, $key_url) or die "$!";
    my $key_file;
    while (read(FILE, $buf, 60*57)) {
        $keyfile = $key_file . encode_base64($buf,$eol);
    }
}

Сбой при открытии ФАЙЛА, поскольку $ type не подставляется.если я изменю строку, как показано ниже

my $key_url = File::Spec->catfile($dir. "/keys/cert.key.$label.pem")

, она будет работать нормально.

1 Ответ

1 голос
/ 13 мая 2019

Это довольно простая отладка.

Добавьте это к своему коду в качестве первых строк в подпрограмме:

if (defined $type) {
  print "\$type is undefined\n";
} else {
  print "\$type is '$type'\n";
}

Таким образом, вы увидите, какое именно значение $typeтолько перед тем, как пытаться его использовать.Я ожидаю, что вы увидите либо «$ type is undefined», либо «$ type is ''».

Тогда ваша проблема заключается в том, чтобы найти, где должен быть установлен $type, и понять, почему это не так.

Два других совета:

  • При написании Perl-программы всегда полезно иметь в своем коде use strict и use warnings (рядом с верхней частьюфайла), поскольку они найдут большое количество основных ошибок программирования.
  • При программировании на любом языке, вы должны убедиться, что любая подпрограмма использует только те переменные, которые передаются в параметрах или переменных, которые объявлены вподпрограмма.Использование глобальных переменных (как вы, похоже, делаете здесь) делает ваш код менее переносимым и более сложным для отладки.
...