The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Туплю: как вынести подпрограмму в одтельный файл?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Туплю: как вынести подпрограмму в одтельный файл?"  
Сообщение от Dr. Nebula email on 19-Фев-06, 17:38 
Всем привет

Никогда раньше с таким не приходилось сталкиваться, а вот счас пришлось:
есть штук пять скриптов, использующих одинаковые подпрограммы. Если в ней что то правлю - то приходится править во всех скриптах. Исходя из этого возникла мысль вынести общие подпрограммы в отдельный файл, и подключать его в скрипте.

Как это реализовать - понятия не имею :)

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

 Оглавление

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


1. "Туплю: как вынести подпрограмму в одтельный файл?"  
Сообщение от chip email(ok) on 19-Фев-06, 18:10 

>Как это реализовать - понятия не имею :)

perldoc perlmod

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

2. "Туплю: как вынести подпрограмму в одтельный файл?"  
Сообщение от rWizard email(??) on 19-Фев-06, 18:10 
Варианты:
1. Модуль.

==file MyPkg.pm:
package MyPkg;

sub func1 {
  return 'test';
}

==file myprog.pl:
require MyPkg;

print MyPkg::func();

2. Модуль с экпортом
==file MyPkg.pm:
package MyPkg;
BEGIN {
       use Exporter   ();
       our ($VERSION,  @EXPORT );
       @EXPORT = qw(&func1);
}
sub func1 {
  return 'test';
}

==file myprog.pl:
use MyPkg;

print func();

3. Модуль-объект

==file MyPkg.pm:
package MyPkg;
sub new {
  my $self = { SOME_DATE => 'test' }
  bless $self;
  return $self;
}

sub func1 {
my $self = shift;
return $self->{SOME_DATA}
}

==file myprog.pl:
use MyPkg;
my $mpkg = MyPkg->new();
print $mpkg->func1();

рекомедуется к прочтению man perlmod, man perltoot

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

3. "Туплю: как вынести подпрограмму в одтельный файл?"  
Сообщение от chip email(ok) on 19-Фев-06, 18:19 
>Варианты:
>1. Модуль.
>
>==file MyPkg.pm:
>package MyPkg;
>
>sub func1 {
>  return 'test';
>}
>
>==file myprog.pl:
>require MyPkg;
>
>print MyPkg::func();
>
>2. Модуль с экпортом
>==file MyPkg.pm:
>package MyPkg;
>BEGIN {
>       use Exporter   ();
>
>       our ($VERSION,  @EXPORT );
>
>       @EXPORT = qw(&func1);
>}
>sub func1 {
>  return 'test';
>}
>
>==file myprog.pl:
>use MyPkg;
>
>print func();
>
>3. Модуль-объект
>
>==file MyPkg.pm:
>package MyPkg;
>sub new {
>  my $self = { SOME_DATE => 'test' }
>  bless $self;
>  return $self;
>}
>
>sub func1 {
> my $self = shift;
> return $self->{SOME_DATA}
>}
>
>==file myprog.pl:
>use MyPkg;
>my $mpkg = MyPkg->new();
>print $mpkg->func1();
>
>рекомедуется к прочтению man perlmod, man perltoot


1) Дополнение: последней строкой должна идти строка:
   1;
2)
my $self = { SOME_DATE => 'test' }
[..skip..]
return $self->{SOME_DATA} <-- SOME_DATE

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

4. "Туплю: как вынести подпрограмму в одтельный файл?"  
Сообщение от rWizard email(ok) on 19-Фев-06, 18:36 
прошу прощенья, опечатался.
>1) Дополнение: последней строкой должна идти строка:
>   1;
в каждом файле MyPkg.pm, в основной программе не обязательно.
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

5. "Туплю: как вынести подпрограмму в одтельный файл?"  
Сообщение от Dr. Nebula email on 19-Фев-06, 18:43 
>прошу прощенья, опечатался.
>>1) Дополнение: последней строкой должна идти строка:
>>   1;
>в каждом файле MyPkg.pm, в основной программе не обязательно.

Спасибо, только что то модуль с экспортом работать не хочет:

cat myPkg.pm
#!/usr/bin/perl -w
package myPkg;
BEGIN {
       use Exporter   ();
       our ($VERSION,  @EXPORT );
       @EXPORT = qw(&func1);
}
sub func1 {
return 'test';
}
1;
=====================
cat test.pl
#!/usr/bin/perl -w
use myPkg;

print func1();

=====================
./test.pl
Undefined subroutine &main::func1 called at ./test.pl line 4.

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

6. "Туплю: как вынести подпрограмму в одтельный файл?"  
Сообщение от Dr. Nebula email on 19-Фев-06, 19:01 
победилось так:
cat myPkg.pm

package myPkg;

require Exporter;
        @ISA = qw( Exporter );
        @EXPORT = qw(
                func1
        );

sub func1() {
        return('test');
}

1;

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

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

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




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

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