The OpenNET Project / Index page

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

Автоматизация объявления переменных в Perl при использовании strict
Мне требовалось переписать мой же проект, написанный на Perl, с использованием "use strict". 
Было лень объявлять все переменные вручную, т.к. их было чертовски много,
посему я решил сей процесс
автоматизировать. Это конечно не совсем правильно, однако я всё равно весь
результат потом тщательно проанализировал.
 
Итак, предлагаю вашему вниманию мой метод автоматизации:

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.
 
27.04.2009 , Автор: Sokolov Alexey , Источник: http://truebsd.org/sokolov/463...
Ключи: perl, strict, shell / Лицензия: CC-BY
Раздел:    Корень / Программисту и web-разработчику / Perl / Переменные в Perl

Обсуждение [ RSS ]
 
  • 1.1, prapor, 12:37, 27/04/2009 [ответить] [смотреть все]
  • +/
    >пишите скрипты на Perl сразу с использованием strict и warnings.

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

     
     
  • 2.3, vadiml, 13:59, 27/04/2009 [^] [ответить] [смотреть все]
  • +/
    Если писать обёртку для С/С++ библиотеки, то весьма часто приходится часть strict'ов отключать из-за всяких хитростей

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

     
     
  • 3.8, prapor, 17:01, 27/04/2009 [^] [ответить] [смотреть все]
  • +/
    Это да. Хорошо что мне, как админу, не надо такого делать....
     
  • 1.4, bibi, 15:42, 27/04/2009 [ответить] [смотреть все]
  • +/
    vadiml, еще статьи и про qt 4.*  будут?
     
  • 1.5, bibi, 15:45, 27/04/2009 [ответить] [смотреть все]
  • +/
    если программа большая, то без use strict не обойтись

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

     
  • 1.9, soko1, 00:08, 28/04/2009 [ответить] [смотреть все]  
  • +/
    Спасибо модератору за неплохую поправку.
     
  • 1.10, soko1, 00:10, 28/04/2009 [ответить] [смотреть все]  
  • +/
    Кстати, подправьте пожалуйста это ещё:

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

     
  • 1.11, fredy, 04:46, 29/04/2009 [ответить] [смотреть все]  
  • +/
    вот объясните мне пожалуйста кому так сильно помешали косвенные ссылки чтобы отключать их в strict 'refs'?
     
  • 1.12, bibi, 13:11, 01/05/2009 [ответить] [смотреть все]  
  • +/
    no strict 'refs';
                *{__PACKAGE__ . "::$sub"} = sub {
                  return $self->$sub(@_);
                }
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor