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
Раздел:    Корень / Программисту и 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:
    Заголовок:
    Текст:




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

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