在连接(。)中使用未初始化的值$ oldvalue或在perl中使用字符串错误?

时间:2014-12-17 06:56:25

标签: mysql perl dbi

我想检查旧值,新值是否匹配,但我得到的错误如下,

Use of uninitialized value $oldvaluein concatenation (.) or string

我发现$ row [0]将返回空或NULL或字符串,有任何建议可以修复它。?

my $newvalue = $2;
my $oldvalue;
my $select_sth3 = $dbh->prepare("SELECT oldname FROM `Description` des,Devices D where D.hid = des.hid and D.ipv4 = '$ip'  and des.index = $index ")or die "$dbh->errstr";
$select_sth3->execute() or die "$dbh->errstr";
my @row = $select_sth3->fetchrow_array;
$oldvalue= $row[0];
if ($newvalue ne $oldvalue)
  {
      print "$newvalue \n";
      print "$oldvalue\n";
      .......and .update database...
  }

2 个答案:

答案 0 :(得分:0)

在进行字符串比较之前,检查是否已定义$oldvalue

if (defined($oldvalue)) {
    ...
} else {
    ...
}

答案 1 :(得分:0)

在这样的情况下提及......

if (($oldvalue ne '') or (!defined($oldvalue)) or ($newvalue ne $oldvalue)){
//place your code here...
}