У меня есть 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 выглядели одинаково, но сабвуфер обновления был выполнен в любом случае, означая, что сравнение вернуло true, когда похоже, что оно должно было быть false.
Есть мысли / идеи?
Dave