Есть БД, в ней таблица состоящая из трех столбцов: id, pnames, points.
+----+---------+--------+
| id | pnames | points |
+----+---------+--------+
| 1 | Ivanov | 90 |
| 2 | Petrov | 190 |
| 3 | Sidorov | 110 |
| 4 | Sokolov | 70 |
+----+---------+--------+
Задача состоит в том, чтобы вывести в текстовый файл записи у которых points>100. Вот решение:
#!/usr/bin/perl
use DBI;
my $filename = 'test.txt';
$host = "localhost";
$database = "mybase";
$user = "myuser";
$password = "myuser";
$dsn = "DBI:mysql:database=$database;host=$host;port=3306";
$dbh = DBI->connect($dsn, $user, $password);
$sth = $dbh->prepare("select * from players where points>100");
$sth->execute;
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
while ($ref = $sth->fetchrow_arrayref) {
print $fh "$$ref[0]\t$$ref[1]\t$$ref[2]\n";
}
close $fh;
$rc = $sth->finish;
$rc = $dbh->disconnect;
print $fh "$$ref[0]\t$$ref[1]\t$$ref[2]\n";