“不能修改标量赋值中的常量项”?在AIX中

时间:2017-01-05 05:30:01

标签: html perl

我在运行代码时遇到此编译错误。任何人都可以帮助解决此代码的问题。 ? 操作系统是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;

2 个答案:

答案 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(将赋值运算符=更改为胖逗号,=>)。