【发布时间】:2016-02-10 07:44:17
【问题描述】:
我是 Perl 的新手,所以我希望有人可以帮助我解决这个问题 我有两个 Perl 脚本
连接到我的sql2008数据库,从一个表中选择2列作为数组,使用foreach打印出来。
使用 Excel::Writer::XLSX 生成一个 Excel 文件,其中包含我在特定行和列中放置的任何字符串。
我想运行脚本 #1 并将其输出到 Excel 文件中。我想我应该能够将上面的这两个脚本结合起来,但我不断收到“需要显式包”错误。 (我假设是因为我的变量前面没有my)。我一定要走远了。寻求帮助。
这是我的代码不起作用:
use strict;
use DBI;
use Excel::Writer::XLSX;
# connect to the db
my $dbh = DBI->connect('dbi:ODBC:dbname', 'dblogin', 'dbpassword');
my $sth1 = $dbh->selectall_arrayref("
select col1, col2 from table");
foreach my $ln (@$sth1)
{ my($col1, $col2) = @$ln; print "$col1 $col2\n";}
my $workbook = Excel::Writer::XLSX->new( 'col1col2test.xlsx' );
my $worksheet = $workbook->add_worksheet();
$worksheet->write( "A1", "$col1" );
$worksheet->write( "A2", "$col2" );
【问题讨论】:
-
如果您正确缩进代码,很容易看出
$col1和$col2仅在循环范围内定义。此外,在使用 DBI 时,变量名称$sth通常是为语句句柄保留的,但您得到的是 arrayref 的 arrayref,因此您可能应该将其命名为其他名称。