URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 53224
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Автоматизация объявления переменных..."

Отправлено auto_tips , 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


Содержание

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

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


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

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


"Автоматизация объявления переменных в Perl при использовании..."
Отправлено prapor , 27-Апр-09 17:01 
Это да. Хорошо что мне, как админу, не надо такого делать....

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

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

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


"Автоматизация объявления переменных в Perl при использовании strict"
Отправлено soko1 , 28-Апр-09 00:08 
Спасибо модератору за неплохую поправку.

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

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


"Автоматизация объявления переменных в Perl при использовании strict"
Отправлено fredy , 29-Апр-09 04:46 
вот объясните мне пожалуйста кому так сильно помешали косвенные ссылки чтобы отключать их в strict 'refs'?

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