Ошибка Global symbol @var..
исходит из perl и означает, что ваша переменная @var
не объявлена в текущей области. Предполагая, что он используется правильно, вы можете объявить его с помощью my @var
. Если это не переменная perl, вам нужно заключить строку в одинарные кавычки, чтобы избежать интерполяции переменных. Трудно сказать, что вы должны делать, поскольку вы ничего не показываете в своем коде. Например:
my $query = q#LOAD DATA INFILE 'file_name'
INTO TABLE tbl_name
FIELDS TERMINATED BY ','
(columns..., @var, morecolumns...)
SET datecolumn = str_to_date(@var, '%d/%m/%Y');#;
Обратите внимание, что q()
будет принимать альтернативные разделители, в зависимости от ваших потребностей, например #
, и будет препятствовать интерполяции переменных в строке.
Если это переменная perl, вам, вероятно, следует использовать заполнители и модуль DBI (или аналогичный) для дополнительной безопасности. Массив @var
, если он находится внутри строки в двойных кавычках, будет расширен и дополнен пробелами (если для $"
установлено значение по умолчанию), что может быть не совсем тем, что вы хотите. E.g.:
my @var = ("foo", "bar", "baz");
print "@var";
Напечатает foo bar baz
.