The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Автоматизация объявления переменных..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей (Public)
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Автоматизация объявления переменных..."  
Сообщение от auto_tips (??) on 27-Апр-09, 12:37 
Мне требовалось переписать мой же проект, написанный на Perl, с использованием <b>use strict</b>. Было лень объявлять все переменные вручную, т.к. их было чертовски много, посему я решил сей процесс автоматизировать. Это конечно не совсем правильно, однако я всё равно весь результат потом тщательно проанализировал.
Итак, предлагаю вашему вниманию мой метод автоматизации:

1. Включаем в скрипте режим strict:

   use strict;

2. Запускаем наш скрипт и фильтруем вывод ошибок на наличие "Global symbol", записывая в отдельный файл (например, var.txt):

   perl -c script.pl 2>&1 | grep "Global symbol" > var.txt

3. Отсортируем дубликаты, оставив только первое вхождение переменной:
  
   cat var.txt| sort -k 3| uniq -w 60| sort -nk 11| less

4. Получившийся вариант анализируем мозгами и вставляем в код скрипта необходимые операторы "my".
Проверяем каждую переменную на необходимость дополнительного переопределения в локальных блоках и функциях.

Настоятельная рекомендация: пишите скрипты на Perl сразу с использованием strict и warnings.

URL: http://truebsd.org/sokolov/463
Обсуждается: https://www.opennet.ru/tips/info/2046.shtml

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Автоматизация объявления переменных в Perl при использовании..."  
Сообщение от prapor (??) on 27-Апр-09, 12:37 
>пишите скрипты на Perl сразу с использованием strict и warnings.

В Camelbook`е их отсутствие вообще названо ошибкой программиста.....

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Автоматизация объявления переменных в Perl при использовании..."  
Сообщение от vadiml on 27-Апр-09, 13:59 
Если писать обёртку для С/С++ библиотеки, то весьма часто приходится часть strict'ов отключать из-за всяких хитростей

так что без no strict не обойтись.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Автоматизация объявления переменных в Perl при использовании..."  
Сообщение от prapor (??) on 27-Апр-09, 17:01 
Это да. Хорошо что мне, как админу, не надо такого делать....
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Автоматизация объявления переменных в Perl при использовании..."  
Сообщение от bibi on 27-Апр-09, 15:42 
vadiml, еще статьи и про qt 4.*  будут?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Автоматизация объявления переменных в Perl при использовании..."  
Сообщение от bibi on 27-Апр-09, 15:45 
если программа большая, то без use strict не обойтись

если бы не было use strict, то на поиск глупых ошибок на было бы потратить несколько дней :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Автоматизация объявления переменных в Perl при использовании..."  
Сообщение от soko1 email(??) on 28-Апр-09, 00:08 
Спасибо модератору за неплохую поправку.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Автоматизация объявления переменных в Perl при использовании..."  
Сообщение от soko1 email(??) on 28-Апр-09, 00:10 
Кстати, подправьте пожалуйста это ещё:

>с использованием <b>use strict</b>.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Автоматизация объявления переменных в Perl при использовании..."  
Сообщение от fredy on 29-Апр-09, 04:46 
вот объясните мне пожалуйста кому так сильно помешали косвенные ссылки чтобы отключать их в strict 'refs'?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Автоматизация объявления переменных в Perl при использовании..."  
Сообщение от bibi on 01-Май-09, 13:11 
no strict 'refs';
            *{__PACKAGE__ . "::$sub"} = sub {
              return $self->$sub(@_);
            }
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру