Я пытаюсь разбить результаты запроса mysql с помощью модуля perl и DBI. Вот мой код:Perl DBI array - split
#!/usr/bin/perl -w
use DBI;
$dbh = DBI->connect('DBI:mysql:host', 'user', 'password'
) || die "Could not connect to database: $DBI::errstr";
$sql = "SELECT * FROM users;";
$sth = $dbh->prepare($sql);
$sth->execute or die "SQL Error: $DBI::errstr\n";
while (@row = $sth->fetchrow_array) {
my @value1 = split(".",@row);
my $domain = $value1[1];
print "$domain\n";
}
$dbh->disconnect();
Результат запроса аналогичен: username.domain Так что я хочу, чтобы разделить результат с «» чтобы показать только «домен», но он возвращает мне ошибку: Использование неинициализированного значения $ domain в конкатенации (.) или строке ...
Спасибо!
'@ row' в скалярном контексте вычисляет количество элементов в' @ row'. Это то, что вы раскалываете. В каком поле вы хотите разбить? Первый? Это '$ row [0]'. – ikegami
Добавить 'use strict; использовать предупреждения, 'на вершину каждого написанного вами Perl-скрипта, только под shebang, и потерять флаг' -w'. Это поможет избежать множества ошибок и значительно упростит поиск и устранение неполадок. – ThisSuitIsBlackNot
''. "' В split - это регулярное выражение, а 'select *', сопровождаемое 'fetchrow_array', - это, мягко говоря, ужасная идея. –