Очевидная проблема - это @ внутри двойных кавычек:
my $login = "admin@xxxxx.com";
вероятно выходит как
$login = "admin.com"
и, если у вас были включены предупреждения, в файл журнала выводится предупреждение, поскольку Perl видит @xxxx как массив и пытается его интерполировать, а затем предупреждает, потому что оно пустое. То есть, если у вас нет массива с именем @xxxx. Если вы это сделаете, вы получите все значения в строке.
Если у вас есть адрес электронной почты, используйте одинарные кавычки для предотвращения интерполяции @xxxx в виде массива:
my $login = 'admin@xxxxx.com';
Или вы можете использовать
my $login = "admin\@xxxxx.com";
для предотвращения @ начала интерполяции.
Могут быть и другие проблемы с вашим сценарием, но это наиболее очевидная проблема.
Как ни странно Я только что читал о недостатках интерполяции в Perl .
Еще одна вещь ...
Еще одна вещь: у вас уже есть fatalsToBrowser, но
use warnings;
use strict;
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);
, вероятно, дал бы вам предупреждение в вашем браузере о неинициализированных значениях, поэтому, возможно, стоит включить warningsToBrowser
, пока ваш скрипт не заработает (или если он перестанет работать) ( документация здесь * 1028) *), а два других всегда.