Почему при сравнении значений возвращается значение false, если значения совпадают?

У меня есть Perl-скрипт, который загружает данные из файла Excel XLS в базу данных. Сначала он проверяет, существует ли дата-время значения из файла в базе данных. Если это так, он проверяет, совпадает ли значение из файла со значением в базе данных. Если они совпадают, значение пропускается. Если они различаются, значение в базе данных обновляется.

Код, который выполняет сравнение:

if($dbVal != $fileVal) {
  &UpdateData($id, $dt, $fileVal);
}

Проблема в том, что иногда, даже если два значения «выглядят» одинаково, сравнение решает, что это не так, и выполняется обновление sub. Ниже приведена выдержка из журнала отладки. Для каждого значения из файла он печатает значение в БД и значение файла. Если подпрограмма обновления выполняется, выдается строка «Updating ...»:

dbVal = '68800812'; file val = '68800812'
dbVal = '66649164'; file val = '66649164'
Updating:  41248 : 01/01/2011 07:00 : 66649164
dbVal = '64975681'; file val = '64975681'
dbVal = '64037179'; file val = '64037179'
dbVal = '64095165'; file val = '64095165'
dbVal = '64917078'; file val = '64917078'
dbVal = '66584188'; file val = '66584188'
Updating:  41248 : 01/01/2011 12:00 : 66584188

Таким образом, в приведенном выше фрагменте было два случая, когда db val и file val выглядели одинаково, но в любом случае выполнялась подпрограмма update, означая, что сравнение вернуло true, когда оно выглядело как ложное.

Есть мысли / идеи?

Дейв

Ответы на вопрос(2)

Ваш ответ на вопрос