The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
экспорт переменных в модули perl, !*! mthawk, 22-Июн-05, 11:39  [смотреть все]
Доброго времени суток.
Возникла проблема.
При подключении модуля к основной программе не возникает проблем при использовании обьявляемых им (модулем) переменных и подпрограмм.
Но передать в модуль некоторые переменные основной программы не получается.
Точнее даже не передать а обеспечить доснуп к некоторым переменным.
Как это можно выполнить.
Заранее спасибо.
  • экспорт переменных в модули perl, !*! chip, 23:21 , 22-Июн-05 (1)
    >Доброго времени суток.
    >Возникла проблема.
    >При подключении модуля к основной программе не возникает проблем при использовании обьявляемых
    >им (модулем) переменных и подпрограмм.

    Своеобразная форма изложения.

    >Но передать в модуль некоторые переменные основной программы не получается.
    >Точнее даже не передать а обеспечить доснуп к некоторым переменным.
    >Как это можно выполнить.

    передавай в качестве параметров методам.

    • экспорт переменных в модули perl, !*! mthawk, 12:42 , 23-Июн-05 (2)
      >>Доброго времени суток.
      >>Возникла проблема.
      >>При подключении модуля к основной программе не возникает проблем при использовании обьявляемых
      >>им (модулем) переменных и подпрограмм.
      >
      >Своеобразная форма изложения.
      >
      >>Но передать в модуль некоторые переменные основной программы не получается.
      >>Точнее даже не передать а обеспечить доснуп к некоторым переменным.
      >>Как это можно выполнить.
      >
      >передавай в качестве параметров методам.
      К сожалению кол-во "общих" переменных слишком велико, что бы передавать его параметрами.

      Уже нашел решение.
      package NNNNN;
      *var_from_main=*main::var_from_main
      ..........
      ..........
      sub dddd {
      $var_from_main #имеем доступ
      }
      1;

      • экспорт переменных в модули perl, !*! chip, 16:11 , 23-Июн-05 (3)
        >К сожалению кол-во "общих" переменных слишком велико, что бы передавать его параметрами.

        передавать в качестве указателя на хеш коструктору new(). При то что они "общие".

        >Уже нашел решение.

        это не решение, это костыль.

        >package NNNNN;
        >*var_from_main=*main::var_from_main
        >..........
        >..........
        >sub dddd {
        >$var_from_main #имеем доступ
        >}
        >1;

        пример, неверной декомпозиции на модули.

        ps: ничего личного, но если требуется подобный изврат, то явно проблемы в архитектуре приложения. Не сочтите за оскорбление.

        • экспорт переменных в модули perl, !*! mthawk, 10:29 , 29-Июн-05 (4)
          >>К сожалению кол-во "общих" переменных слишком велико, что бы передавать его параметрами.
          >
          >передавать в качестве указателя на хеш коструктору new(). При то что они
          >"общие".
          >
          >>Уже нашел решение.
          >
          >это не решение, это костыль.
          >
          >>package NNNNN;
          >>*var_from_main=*main::var_from_main
          >>..........
          >>..........
          >>sub dddd {
          >>$var_from_main #имеем доступ
          >>}
          >>1;
          >
          >пример, неверной декомпозиции на модули.
          >
          >ps: ничего личного, но если требуется подобный изврат, то явно проблемы в
          >архитектуре приложения. Не сочтите за оскорбление.

          Не буду отрицать, приложение писалось мною относительно давно, когда работу с модулями я еще не постиг в необходимой мере.
          Посему писал как мог. А теперь приходится перестраивать дом, не снося фундамент.
          Если можно - буду очень признателен за ссылки на источники по правильному написанию модулей и вообще основам "ООП" на перл

          • экспорт переменных в модули perl, !*! chip, 11:38 , 29-Июн-05 (5)
            >Если можно - буду очень признателен за ссылки на источники по правильному
            >написанию модулей и вообще основам "ООП" на перл

            Начать стоит с находящихся под рукой:
                       perlmod             Perl modules: how they work
                       perlmodlib          Perl modules: how to write and use
                       perlmodstyle        Perl modules: how to write modules with style

                       perlboot            Perl OO tutorial for beginners
                       perltoot            Perl OO tutorial, part 1
                       perltooc            Perl OO tutorial, part 2

            и perlstyle

            • экспорт переменных в модули perl, !*! PoizOn, 16:46 , 29-Июн-05 (6)
              >>Если можно - буду очень признателен за ссылки на источники по правильному
              >>написанию модулей и вообще основам "ООП" на перл
              >
              >Начать стоит с находящихся под рукой:
              >           perlmod
              >          
              > Perl modules: how they work
              >           perlmodlib
              >         Perl modules:
              >how to write and use
              >           perlmodstyle
              >       Perl modules: how to
              >write modules with style
              >
              >           perlboot
              >          
              >Perl OO tutorial for beginners
              >           perltoot
              >          
              >Perl OO tutorial, part 1
              >           perltooc
              >          
              >Perl OO tutorial, part 2
              >
              >и perlstyle


              Писал совсем недавно программу, разбитую на модули и подключаемые через use, так как в модулях хранились глобальные хэши и пара функций, заворачивать все это в ОО модель было просто лень (и с экспортом тоже не хотелось возится). Я работал так:

              myscrip.pl
              ------------------
              #!/usr/bin/perl

              use DATA;# мой модуль

              DATA::Prepare(args);# вызов функции из модуля.

              print %DATA::RUTS;# вывод глобальной переменной определенной в модуле.

              и т.п
              -----------------
              Модуль DATA.pm был примерно такой:
              ---------
              package DATA;

              %DATA::RUTS=();

              sub Prepare {

              }

              # ....

              1;
              __END__
              Так что в вашем случае (перестройки дома) возможно лучше обойтись без ОО.




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

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