Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Повторное использование кода


Автор: BISON* 6.8.2004, 14:28

У меня в двух CGI-скриптах(написанных на Perl) используются одинаковые функции.
Можно ли их вынести в один файл, а затем использовать в скриптах? (Что-нибудь типа "include") Как это сделать?

Заранее благодарен Всем!


Автор: korob2001 6.8.2004, 16:06
Создай класс или модуль.
Вот пример класса:
Код

package MyClass;

use strict; # Не обязательно, но желательно

# конструктор
sub new {
   my $check = shift;
   my $class = ref( $check ) || $check;
   my $self  = {};
   bless( $self, $class );
   return $self;
}

# Далее идут твои методы
# Следующий метод только для примера, его можно удалить.
sub HelloCheck {
      shift;
      my $name = shift || "Anonim";
      return("Hello, $name" . "!");
}

1; # В самом конце класса - обязательно нужно вернуть истинное значение.

Имя файла класса, должно совпадать с именем пакета с точностью до регистра. В нашем случае имя файла будет выглядеть так: MyClass.pm
Следует обратить внимание на расширение .pm, а не.pl - это для того что-бы нам при подключении класса не нужно было использовать никаких расширений.

А теперь давай попробуем обратиться к методу HelloCheck класса MyClass.
Код

#!/usr/bin/perl -w
use strict;

# Указываем путь к каталогу в котором Perl будет искать наш класс.
# По умолчанию класс и вызывающая программа находятся в одном каталоге.
use lib qw( . );

# Подключаем класс.
use MyClass;

#Создаём объект
my $class = new MyClass;

# Обращаемся к методу HelloCheck
# Слово World можно заменить на любое другое или вообще
# не передавать никаких параметров, тогда будет использовано
# значение по уполчанию Anonim
my $string = $class->HelloCheck('World');

# Выводим на терминал полученную из класса строку
print $string, "\n";

Удачи.

Автор: BISON* 15.8.2004, 14:33
korob2001 Спасибо, я понял теперь в каком русле надо копать!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)