2011-07-22 19 views
0

unable to connect error私の2番目のサブルーチンの呼び出しについて。perlサブルーチンとdbiエラーのトラブルシューティング

Iは

の条件が設定されている場合、サブ1の結果のメインチェックは、私は値がサブ2(印刷を行う)を開始するために正しい確認することができ、サブ2 を実行する2つのサブ・ルーチンを使用してい両方のサブシステムはかなり似ています。これがどこで失敗しているのか分かりません。

#subs 

    sub get_flg 
    { 
     undef $/; 
     open (my $FH, "< l.sql") or die "error can't open this file $!"; 
     my $sth= $dbh->prepare(<$FH>) || 
      die ("Cannot connect to the database: ".$DBI::errstr."\n"); 
     $sth->execute; 
     close $FH; 
     my $row = $sth->fetchrow_hashref; 
     $sth->finish; 
     return $row->{A}; 
} 

sub get_msg 
{ 
    undef $/; 
    open (my $FH, "< 2.sql") or die "error can't open this file $!"; 
    my $sth= $dbh->prepare(<$FH>) || 
     die ("Cannot connect to the database: ".$DBI::errstr."\n"); 
    $sth->execute; 
    close $FH; 
    my $row = $sth->fetchrow_hashref; 
    $sth->finish; 
    return @$row{'B','C'}; 
} 


#MAIN: 

my $dbh = DBI->connect($cf{dsn},$cf{user},$cf{pw}, 
     {AutoCommit => 0, RaiseError => 0, PrintError => 0 }) || die ("Cannot connect to the database: ".$DBI::errstr."\n"); 
my $val = get_flg(); 
print $val; 
$dbh->disconnect(); 

if ($val == 0) { 
    print "$val\n"; 
    } elsif 
     ($val == 1) { 
    print "My val is $val\n"; 
    my ($val2,$val3) = get_msg(); 
    print "$val2:$val3\n";  
    exit; 
}; 
$dbh->disconnect; 

答えて

2

最初のサブルーチンを呼び出した後、データベースから切断しています。

my $val = get_flg(); 
print $val; 
$dbh->disconnect(); 

$dbh->disconnectを削除しても問題ありません。

+0

ありがとうございました!目が疲れているはずです。ありがとうございました。 – cjd143SD

関連する問題