2017-01-05 4 views
1

私のコードを実行すると、このコンパイルエラーが発生します。誰でもこのコードで間違っていることを助けることができます。 ?"スカラー割り当てで定数項目を変更できません" AIXで

近く、pet_logical_date.plライン29でスカラー割り当てに起因するコンパイルエラーに中止され pet_logical_date.plの「1}」の実行を一定の項目を変更することはできません - オペレーティング・システムは、AIX

エラーがあります。

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 ::テーブル –

+0

@manavsharma - あなたのコードでは '$ cgi-> table'ですが、コードの上の" Line 29 "では' $ cgi = ' - この部分を' - > 'から' => 'に変更すると、問題が発生します。完全な行は、 '$ cgi-> table({-border => 1})'( '-'が' border 'の前に必要かどうかわからない - Rogerはおそらく正しいでしょう。 CGIを使わないでください) – Tanktalus

1

29行目は次のようにする必要があります:

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

エラーの原因はいくつかの予期しない動作を生成することができないが、他のこと何かが、あります:あなたのSQLクエリは次の2つのフィールドのレコードセットを返します。

いますが、3番目のフィールドを読み取ろうwhileループ内:

$Logical_Date_R = $data[2]; 

変数Logical_Date_Rはおそらく、null値を持っているとしています。

+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 ";"を削除してみてください。 –

関連する問題