2017-01-05 26 views
1

运行我的代码时出现此编译错误。任何人都可以帮助这个代码有什么问题。 ? 操作系统是AIX“无法修改标量赋值中的常量项目”?在AIX

错误 -

在pet_logical_date.pl线29无法修改标量分配常数项的 pet_logical_date.pl接近“1}”执行中止由于编译错误。

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

print $cgi=>table({border=1});试图分配border=1。我想你的意思是border => 1(将赋值运算符=更改为胖逗号=>)。

+0

感谢您的帮助。它被移动了。但现在出现以下错误: - 在第29行调用未定义的子程序和main :: table。 –

+0

@manavsharma - 在你的代码中它是'$ cgi-> table',但是在你的代码上面的“Line 29”中它是'$ cgi => table ' - 如果您将此部分从' - >'更改为'=>',那么会出现问题。完整的行应该是另一个答案,'$ cgi-> table({-border => 1})'(不知道在'border'前面是否需要'-' - 罗杰可能是正确的,我只是不要使用CGI。) – Tanktalus

1

第29行应该是这样的:

print $cgi->table({ -border=>"1" }); 

还有别的东西,虽然不是错误会产生一些意想不到的问题的原因:你的SQL查询返回的两个字段的记录;

但while循环您尝试读取第三场中:

$Logical_Date_R = $data[2]; 

变量Logical_Date_R很可能将有一个空值。

+0

谢谢。该脚本现在可以在AIX m/c上正常运行。但是当我从HTML(APACHE)调用这个脚本时,我没有在GUI中获得任何o/p。但能够从后端获得o/p。任何线索? –

+0

1)检查您从apache获得的页面是否为错误页面或请求的页面不显示任何内容(尝试查看页面的源代码); 2)检查apache的错误日志('/ var/log/httpd/error_log','/ var/log/apache2/error.log','/ var/log/httpd-error.log',...别的东西)。 –

+0

我测试了你的代码,我得到了一个普通的html页面,里面有一个可见的表格。 尝试删除第3行的'$ \ =“\ n”;' –