我在运行代码时遇到此编译错误。任何人都可以帮助解决此代码的问题。 ? 操作系统是AIX
错误 -
不能修改pet_logical_date.pl第29行的标量赋值中的常量项,靠近" 1}"执行 pet_logical_date.pl由于编译错误而中止。
Line 29 is - *print $cgi=>table({border=1});
CODE是 -
#!/usr/bin/perl -w
#####################################################################################
$\="\n";
$ENV{ORACLE_HOME}='/oravl01/11.2.0.3';
$LD_LIBRARY_PATH='/oravl01/11.2.0.3/lib';
use Shell;
use DBI ;
use CGI ;
my $cgi = new CGI;
print $cgi->header;
print $cgi->start_html(-title=>'Basic CGI');
my $dsn = "DBI:Oracle:$db_inst";
$dbh = DBI->connect( 'dbi:Oracle:ABC',"DEF","IJK") or die "Database connection not made: $DBI::errstr";
my $sql = qq{SELECT logical_date,logical_date_type from logical_date where expiration_date is null };
my $sth = $dbh->prepare( $sql ) || die $dbh->errstr;
$sth->execute() || die $dbh->errstr;
print $cgi->table({border=1});
print "<tr align=center><th>$sth->{NAME}->[0]</th><th>$sth->{NAME}->[1]</th></tr>";
while (@data = $sth->fetchrow_array()) {
$Logical_Date_O = $data[0];
$Logical_Date_B = $data[1];
$Logical_Date_R = $data[2];
print "<tr><td><font color='black'>$Logical_Date_O</font></td>
<td>$Logical_Date_B</td><td>$Logical_Date_R</td></tr>\n";
}
print $cgi->end_table;
print $cgi->end_html;
答案 0 :(得分:1)
第29行应该是这样的:
print $cgi->table( { -border=>"1" } );
还有别的东西,虽然不是错误的原因可以产生一些意想不到的行为:你的SQL查询返回两个字段记录集;
但在while循环中,您尝试读取第三个字段:
$Logical_Date_R = $data[2];
变量Logical_Date_R可能会有一个空值。
答案 1 :(得分:0)
print $cgi=>table({border=1});
正在尝试分配border=1
。我认为你的意思是border => 1
(将赋值运算符=
更改为胖逗号,=>
)。