用于报告的 Perl 框架 - 动态创建变量

Perl framework for report - creating variable dynamically

我正在尝试为 Perl 设计一个框架,其中 sql 文件将保存在一个单独的文件中。 Perl 脚本应该读取 SQL 文件并确定选择了多少列,它应该迭代 SQL 查询的输出并将它们写入 CSV 文件。最初我想从简单的查询开始,如:

select col1, col2 from table1;

因此 Perl 脚本应该迭代 SQL 输出并创建 CSV 文件,如下所示:

val1a,val1b

val2a,val2b

val3a,val3b

我面临的问题是我不知道如何动态创建变量数。假设 SQL 查询中有 2 列,我必须有 2 个变量来存储列值并将其写入输出文件。如果有 3 列,它应该能够在不更改脚本的情况下创建 3 个变量。

请告知是否有支持此功能的Perl外部模块。

do not want to create dynamic variables。相反,您想使用哈希。

如果您不熟悉这个概念,请看一看perlref and perlreftut. For your SQL interaction you should start by reading the DBI documentation, specifically fetchrow_hashref and fetchrow_arrayref. To write the data to CSV, use Text::CSV

use strict;
use warnings;
use DBI;
use Text::CSV;
use autodie;

my $csv = Text::CSV->new;
open my $fh, '>', 'output.csv';

my $dbh = DBI->connect( ... );

# write headings
$csv->print($fh, ['val1', 'val2']);

my $sth = $dbh->prepare('SELECT val1, val2 FROM table1');
$sth->execute;

while (my $res = $dbh->fetchrow_arrayref) {
  $fh->print($fh, $res);
}

close $fh;