'seek' se refiere a una llamada a una primitiva del sistema del mismo nombre, que sirve para posicionarse en un determinado byte dentro de un archivo.
Eso no tiene nada que ver con lo del if() ni con lo que tienes ahí escrito, así que el error viene de antes.
Ten en cuenta que el valor de
$! solo tiene sentido si es comprobado
inmediatamente después de la operación "peligrosa". Un poco más tarde, no es seguro que lo que contenga sea significativo.
Por otra parte, lo que quieres es comparar
$lectura[2] con
$n_preo. El caso es que la comparación es correcta: 'eq' sirve para comparar cadenas de caracteres.
¿Seguro que los dos contienen '1AD;' y no te funciona? Prueba a sacar el contenido de las variables así, con corchetes:
Using perl Syntax Highlighting
print "\$lectura[2] => [$lectura[2]]\n";
print "\$n_preo => [$n_preo]\n";
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Presta atención a que salga algún espacio en blanco, o un avance de línea, como por ejemplo:
Using text Syntax Highlighting
$n_preo => [1AD;
]
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
el corchete se ha desplazado a la línea siguiente, y así nos damos cuenta de que $n_preo contiene algo que no veíamos.