Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > grep и предупреждение "Use of uninitialized value"


Автор: Suppir 3.4.2011, 17:42
Добрый день!

Пишу код:

Код

@kon_pub = grep /^"/, @kon_pub;



При запуске Perl выдает:

Use of uninitialized value $_ in pattern match (m//) at !parse_56.pl line 158, <IN> line 19.


В чем состоит ошибка?


Автор: arto 3.4.2011, 17:49
это не вы ли в прошлом вопросе хотели внесения в массив undef значений?

Автор: Suppir 3.4.2011, 18:02
Нет, это уже для другой программы smile

Добавлено @ 18:11


В общем, в @kon_pub содержатся строки:

-------------------------------
"Кубанские новости N 1"
"Кубанские новости N 2"

"Кубанские новости N 3"
"Кубанские новости N 4"


"Кубанские новости N 6"
-------------------------------


Необходимо убрать из массива все пустые строки. Т.е. он должен выглядеть так:
-------------------------------
"Кубанские новости N 1"
"Кубанские новости N 2"
"Кубанские новости N 3"
"Кубанские новости N 4"
"Кубанские новости N 6"
-------------------------------


Как это сделать? Вариант
Код

@kon_pub = grep /^"/, @kon_pub;

выдает кучу предупреждений.

Автор: arto 3.4.2011, 19:07
map { $_ || () }

Автор: Suppir 3.4.2011, 19:41
arto, работает, спасибо.

Хотя до такого кода догадаться невозможно в принципе. Только если заранее знать. 




Автор: arto 3.4.2011, 22:40
почему нельзя?

используйте тогда, если это сложно, grep { $_ } .

а вообще, есть старинное выражение -- "читайте документацию, она рулез!".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)