DBD :: CSV подклассы DBD :: File , который в свою очередь использует IO :: File для дескриптора файла CSV. Мы можем переопределить поведение открытия файла DBD :: CSV, установив f_dontopen
в true
, что не позволяет DBD :: File открывать файл, переданный DBD :: CSV.
$dbh->{'csv_tables'}->{'prospects'} = { f_dontopen => 1 };
Тогда нам просто нужно предоставить наш собственный IO::File
объект, который указывает на стандартный ввод.
my $io = new IO::File;
$io->fdopen(fileno(STDIN),'r');
$dbh->{'csv_tables'}->{'prospects'} = { fh => $io, f_dontopen => 1 };
Собираем все это вместе:
# Connect to the database
my $dbh = DBI->connect("DBI:CSV:;csv_eol=\n;");
# Associate stdin the table name 'prospects'
my $io = new IO::File;
$io->fdopen(fileno(STDIN),'r');
$dbh->{'csv_tables'}->{'prospects'} = { fh => $io, f_dontopen => 1 };
# Output the name and contact field from each row
my $sth = $dbh->prepare("SELECT * FROM prospects WHERE name LIKE 'G%'");
$sth->execute();
while (my $row = $sth->fetchrow_hashref) {
print("name = ", $row->{'name'}, " contact = ", $row->{'contact'}. "\n");
}
$sth->finish();