простой вопрос по перлу

zakysj50

как избавиться от строчек при выполнении программы:
use of uninitialized value in string eq at line 91.
use of uninitialized value in string ne at line 91.
строчка следующая:
if ($line[$strTMP]->[0] ne 'ATOM') {
эта ошибка то появляется, то исчезает
т.е. ее сначала не было, потом ничего вроде бы не поменялось - она появилась

что она может значить?

ermsoft

$line[$strTMP]->[0]
У тебя там undef записан.
То есть надо или исправлять баг раньше по коду, или сначала проверять через defined, а потом уже сравнивать.

zakysj50

if (defined $line[$strTMP]->[0] ne 'ATOM') {
помогло

sany79

defined $line[$strTMP]->[0] ne 'ATOM'
По-моему, тут какая-то лажа. Независимо от приоритетов операций ни вариант
(defined $line[$strTMP]->[0]) ne 'ATOM',
ни
defined ($line[$strTMP]->[0] ne 'ATOM'
ни даже
defined($line[$strTMP])->[0] ne 'ATOM'
не имеет смысла.
Мне кажется, надо так:
ifdefined $strTMP) and (defined $line[$strTMP]->[0])
and ($line[$strTMP]->[0] ne 'ATOM'
{...}

Elina74

Я с целью исправления таких ошибок в начале проги пишу так:
if( !defined($line[$strTMP]->[0] {$line[$strTMP]->[0] ="";}
грубо говоря...
Еще люблю инициализировать все массивы пустыми (нулевыми) значениями в начале работы.
Оставить комментарий
Имя или ник:
Комментарий: