Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как включить один сценарий в другой? 
:(
    Опции темы
ilya_evseev
Дата 9.12.2005, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 30.10.2004

Репутация: нет
Всего: нет



Создаю "библиотеку":
Код
# this is test.inc
use constant STR1 => 'This is string 1';

И читаю её так:
Код
#!/usr/bin/perl

use strict;
use warnings;

use constant INC_FILE => 'test.inc';

my $return = do INC_FILE;

unless ($return) {
    warn "couldn't parse ".INC_FILE.": $@" if $@;
    warn "couldn't do "   .INC_FILE.": $!" unless defined $return;
    warn "couldn't run "  .INC_FILE unless $return;
    return 0;
}

print "Str1 = ".STR1."\n";

Результат: ругается в самой последней строке на STR1; вообще не видит во внешнем сценарии ни переменных, ни функций из test.inc.

Вариант с вызовом препроцессора ключом -P работает, но он не годится - на той машине не будет препроцессора.

Вариант с модулем отложен на крайний случай, как наиболее монстроидальный.
PM MAIL   Вверх
korob2001
Дата 10.12.2005, 03:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



А зачем тебе нужны константы?

Код

$STR1 = "This is string 1";


Код

#!/usr/bin/perl
use strict 'subs', 'refs';
do ("test.inc");
print "Str1 = $STR1\n";


Это сообщение отредактировал(а) korob2001 - 10.12.2005, 03:57


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
sharq
Дата 10.12.2005, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



ilya_evseev какая необходимость объявлять конмтанты в стороннем файле?
Если тебе нужно с помощью констант настраивать скрипт, то используй другие методы, например, ini-файл или файл твоей произвольной структуры.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
ilya_evseev
Дата 15.12.2005, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 30.10.2004

Репутация: нет
Всего: нет



Мне нужны не только константы, а константы, глобальные переменные и функции. Был большой сценарий, делавший одну задачу - обработку данных. Теперь нужен генератор отчёта. Понятно, что можно вынести общий код в модуль, или дописать код в существующий сценарий и сделать разбор командной строки, чтобы вызывать первый или второй кусок. Но мне хотелось сделать нечто, аналогичное #include "file.c" без сишного препроцессора на рабочем сервере (тем более, что perl требует не cpp, а gcc - представляю, сколько там автоматом установится лишнего).

В итоге: пример от Korob2001 работает только для переменных, и только при частично отключённых предупреждениях (если запускать perl с ключом -w, то он свалится). Функции не видны, константы тоже.

<offtopic>Общее замечание: по-моему (мелкие утилиты, типа HyperStat или MicroBackup, пишу на нём с 98 года), Perl своей избыточной сложностью перевешивает свои же преимущества.</offtopic>
PM MAIL   Вверх
Kannabismus
Дата 15.12.2005, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Тим Тоуди



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 20.11.2005

Репутация: 1
Всего: 2



Const.pm
Код

package Const;

use strict;

use vars qw(@ISA @EXPORT);
@ISA = qw(Exporter);
use Exporter;
@EXPORT = qw/STR1
/;

use constant STR1 => 'This is string 1';

1;

my.pl
Код

use strict;
use lib '.';
use Const;

print "Str1 = " . STR1 ;


PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1104 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.