Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> что за warning-и ? при запуске perl -wc support.pl 
V
    Опции темы
igorold
Дата 17.5.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



получил такие сообщения:
Код

[Wed May 17 12:20:42 2006] support.pl: Unquoted string "dfd" may clash with future reserved word at support.pl line 61.
[Wed May 17 12:20:42 2006] support.pl: Using a hash as a reference is deprecated at support.pl line 7560.
[Wed May 17 12:20:42 2006] support.pl: Using a hash as a reference is deprecated at support.pl line 7564.

Код

sub SendProblemMail
  #Аргументы: пользователь, старый хеш, новый хеш, текущая дата, может быть конкретный адрес
{
    if ($LevelDebug==2) {print $DebugFile "Отправляем письма\n"};
    while (my ($key, $value) = each %{$_[1]})
    {
        %{$_[1]}->{"$key"} = HTMLToText($value);                     # ---> строка 7560
    }
    while (my ($key, $value) = each %{$_[2]})
    {
        %{$_[2]}->{"$key"} = HTMLToText($value);                     # ---> строка 7564
    }
    $_[1]->{"Editor"}       = $_[0];
    $_[1]->{"LastEditDate"} = $_[3];
    $_[2]->{"Editor"}       = $_[0];
    $_[2]->{"LastEditDate"} = $_[3];
    my $HashOld      = $_[1];
    my $HashNew      = $_[2];
.......................................

и как с ними бороться???
могут ли из-за них тормоза быть? 


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
korob2001
Дата 17.5.2006, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Строка 7560, ты присваиваешь значение елементу ссылки на хеш, который в свою очередь является скаляром, вобщем разименовывать его не нужно, точнее нужно, но ты делаешь это оператором стрелака ->. Попробуй исправить эту строку на такую:
Код
$_[1]->{"$key"} = HTMLToText($value);

Тоже самое сделай и в строке 7564:
Код
$_[2]->{"$key"} = HTMLToText($value);

Цитата

Unquoted string "dfd" may clash with future reserved word at support.pl line 61.

Покажи эту строку, а вообще у тебя там не заквоченая строка, в которой есть слово зарезервированное Perl. Кстати грабли так же могут быть и в предидущих строках, до строки 61. Проверь правильно ли у тебя, там, заканчиваются выражения, например везде ли стоят точки с запятой, все ли кавычки закрыты?
  

Это сообщение отредактировал(а) korob2001 - 17.5.2006, 14:19


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
igorold
Дата 17.5.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



вот такая 61-я строка
Код

open(dfd, ">> $DebugFileName") or die("Error opening debug file\n");

я так понял, что слово dfd где-то зарезервировано ...  
пробовал менять dfd на другую переменную, точно так же ругается и на нее ...  

Это сообщение отредактировал(а) igorold - 17.5.2006, 14:45


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
korob2001
Дата 17.5.2006, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Попробуй дескриптор писать в верхнем регистре, например DFD. Если открытие файла происходит в теле подпрограммы, то объяви дескриптор как локальный:
Код

sub open_file {
       my $file = shift || "default.txt";
       local *DFD;
       open (DFD, ">> $file") or die $!;
       flock(DFD,2);
       # Что-то делаем с файлом
       close(DFD);
}
  

Это сообщение отредактировал(а) korob2001 - 17.5.2006, 15:25


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
nitr
Дата 17.5.2006, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Код

open my $dfd, ">> $DebugFileName" or die  "Error opening debug file - $@";


Добавлено @ 15:14 
и работай как с обычным дескриптором ;) типа DFD smile
тоже можешь... close $dfd; и т.д. и т.п. 


--------------------
PM   Вверх
igorold
Дата 17.5.2006, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



korob2001, спасибо, все заработало! 

сделал DFD 

и это тоже сработало:
Код

$_[1]->{"$key"} = HTMLToText($value);
 

Это сообщение отредактировал(а) igorold - 17.5.2006, 15:30


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
sharq
Дата 17.5.2006, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



Если использовать возможности perl, то 
Код

open my $dfd, '>>', $DebugFileName or die  "Error opening debug file: $!";



nitr, не $@, а $!.

Очень занимательное чтиво - perlfunc open

 smile  


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
nitr
Дата 17.5.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



очепятка smile извиняюсь...
igorold, ты просто не поставил $ перед своим dfd 


--------------------
PM   Вверх
igorold
Дата 17.5.2006, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



нет, как только я сделал не dfd, а DFD, warning-и исчезли .... 
вот на это warning-ов не было:
Код

open FILE, "> $AbsolutePath/ufiles/$Filename" or die $!;

 ... я не догадался сравнить, чем они отличаются ...  smile  

nitr
ну и правильно - надо было либо 
Код

open( DFD, ">> $DebugFileName"); # or die("Error opening debug file\n");

либо
Код

open my $dfd, ">> $DebugFileName" or die  "Error opening debug file - $!";
 

Это сообщение отредактировал(а) igorold - 17.5.2006, 15:50


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
korob2001
Дата 17.5.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Да нет просто проблема была в использовании переменной $@, вместо $!. die так же можно и нужно использовать при таком варианте открытия файлов:
Код
open (DFD, ">> $file") or die "Can't open file '$file': $!\n";

Так же и в таком варианте:
Код
open my $dfd, ">>", $file or die "Can't open file '$file': $!";

В переменной $@ тоже сохраняются сообщения, но в определённых случаях, например: при перехвате ошибок блоком eval {}.  

Это сообщение отредактировал(а) korob2001 - 17.5.2006, 16:26


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
nitr
Дата 17.5.2006, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



korob2001, я в своём сообщении применил die "...$!" ... опечатлся smile - написал $@... а указывал всего лишь на $dfd smile - новый стиль программирования в перл. 


--------------------
PM   Вверх
korob2001
Дата 17.5.2006, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата(nitr @  17.5.2006,  14:03 Найти цитируемый пост)
korob2001, я в своём сообщении применил die "...$!" ... опечатлся  - написал $@... а указывал всего лишь на $dfd  - новый стиль программирования в перл. 

 smile Да я понял. Просто igorold закоментировал die в примере выше, вот я и подумал, что он не совсем понял sharq 


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
igorold
Дата 18.5.2006, 05:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 557
Регистрация: 22.12.2005
Где: Россия->Урал-& gt;Миасс

Репутация: 3
Всего: 17



Цитата(korob2001 @ 17.5.2006,  20:32)
 smile Да я понял. Просто igorold закоментировал die в примере выше, вот я и подумал, что он не совсем понял sharq

я закоментировал, потому что отлаживал скрипт - искал как убрать warning-и ... экспериментировал ... 
все, что вы писали, я понял ... уже в скрипте сделал оптимальную конструкцию ...  smile  


--------------------
... у семи нянек 14 сисек ...  
Putin here, Putin there, Putin almost everywhere!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0597 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.