![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
Mikhail0s |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.7.2005 Репутация: нет Всего: нет |
Пишу для себя скрипт, который достает необходимую мне информацию из файлов програмы собирающую разнообразные характеристики компьютеров в локальной сети (програма Everest). Файлы длиной порядка 2000 строк.
Проблема возникает при отработке такой части скрипта: sub getSoftwareInstalled { $audit_data_file_name = $_[0]; #<-имя обрабатываемого файла open (AUDIT_DATA_FILE, "$audit_data_file_name") or die ("Error:$!"); #<-открываю поток while (my $line = <AUDIT_DATA_FILE>) { if ($line =~ m/^ProductName=(.+)/i){ #<-То, что мне необходимо push (@software_items, $1); #<-Отправляю в массив } } foreach $software_item (@software_items){print $software_item, "\n";} #<-!!!ОШИБКА ЗДЕСЬ*** } При выводе perl в том числе, среди выводимых строк (правильных) выдает: [cut] Ad-aware 6 Personal Use of uninitialized value in print at C:\Perl\SCRIPS\audir_data\audit_data_alt.pl line 49, <AUDIT_DATA_FILE> line 4292. Canon CAPT printers [cut] Когда прохожу debug'ом - всё ок - каждый элемент массива заполнен значением. Если перед print поставить spleep (1); (да, да, я не програмист, как умею, так и делаю), то всё выводится без этой ошибки. Соответственно прошу, по возможности, не дать дураком умереть... PS. Activestate. W2k3 (XP). |
|||
|
||||
sharq |
|
|||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
Mikhail0s если файл открыл, не забудь его закрыть! используй use strict и проблем не будет.
Вот отлаженный пример:
![]() Это сообщение отредактировал(а) sharq - 16.7.2005, 00:55 -------------------- [color=gray]There's More Than One Way To Do It[/color] |
|||
|
||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
Это сообщение отредактировал(а) korob2001 - 16.7.2005, 01:00 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
Mikhail0s |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.7.2005 Репутация: нет Всего: нет |
Да, конечно, я использую и strict и warnings. Но закрытие потока, как я проверил - не решает эту проблему (к сожалению). Как я выяснил - это проблема Activestate Komodo. Из командной строки нет никаких ошибок. Ни на win ни на bsd.
Буду писать им багрепорт - дором, чтоли я у них ide увёл ![]() Всем большое спасибо. |
|||
|
||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
А зачем создаёшь второй цикл, он же у тебя просто выводит записи, которые ты отобрал в первом цикле? Попробуй вместо того, что бы забивать массив теми записями, которые соответствуют шаблону, выводить сразу их в STDUOT, т.е. :
Удачи. Это сообщение отредактировал(а) korob2001 - 16.7.2005, 11:41 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
Mikhail0s |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.7.2005 Репутация: нет Всего: нет |
Создаю второй цикл для вывода только в целях отладки. Чтобы визуализировать то, что я там напрограммировал.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |