Forum Webscript.Ru

Программирование => Perl => Тема начата: dymka от 10 Января 2003, 18:44:49

Название: Область видимости переменных
Отправлено: dymka от 10 Января 2003, 18:44:49
хотелось бы сделать следущее:
попользоваться переменными,
затем какбы включить другой файл,
где производятся манипуляции с этими переменными
затем продолжить, работу с уже измененными переменными
т.е. нужно обеспечить глобальность переменных...
Глобальных переменных в перле вроде бы и нет, но может можно обойти сие ограничение... ???
чота у меня не получается пока никак.. :(
Название: Область видимости переменных
Отправлено: NeoNox от 10 Января 2003, 18:52:04
A return() никак задействовать не получается?
И ссылки кстати тоже очень даже помагают.
Или я твою проблему не понял? Может все проще.
Название: Область видимости переменных
Отправлено: dymka от 10 Января 2003, 19:08:21
понял как я понял, но:
1. Возвращать весь ворох переменных громоздко... или я неправильно понял... ???
2. Ссылки тоже... громоздко... или опять же неправильно понял...
Хочется просто...
Еще раз: просто есть код, общий для разных скриптов..
и код должен работать с переменными главного скрипта...
причем код идентичен... чтобы в каждом скрипте не повторяться, пришла идея использовать код один раз, но
встрял на грабли...
Название: Область видимости переменных
Отправлено: USE от 10 Января 2003, 19:15:53
А попробовать создать свой модуль и можно переменные пользовать туда-сюда. Подойдет?
Название: Область видимости переменных
Отправлено: NeoNox от 10 Января 2003, 19:20:49
1. Делай их локальными, в пределах видимости саба или куска кода а потом прибивай. подумай над perldoc perlsub
2. Ничего это не громоздко.
Цитировать
Еще раз: просто есть код, общий для разных скриптов..

Вынести все общее нафиг в модуль...
Цитировать
и код должен работать с переменными главного скрипта...

...будет
Цитировать
причем код идентичен... чтобы в каждом скрипте не повторяться, пришла идея использовать код один раз, но
встрял на грабли...
Вывод: Создай модуль иначе сам создашь отличную грядку плотноуложенных граблей.
Название: Область видимости переменных
Отправлено: dymka от 10 Января 2003, 19:26:32
я так и создал - модуль...
мне такое давно известно... :)
привожу пример
test.pl
----
#!perl -w
use strict;
our $d = "first";

# далее хочу поработать в модуле с $d

print $d;
----
mymodule.pm
----
$d .= "second";
1;
----
хочу получить "firstsecond";
т.е. два вопроса...
1. как вызвать тот модуль
2. как обратиться в модуле к переменной $d ???
$main::d обращается почему-то  не к той переменной.. :(
или я что-то недопонимаю...
Название: Область видимости переменных
Отправлено: dymka от 10 Января 2003, 19:33:50
народ... сорри.. торможу жестоко... стока пить неззя...
достаточно объявить процедуру и вызвать один раз... меня это устраивает!
правда я хотел эффекта require в php... хотя может оно и существует... решение... как в пхп...
Название: Область видимости переменных
Отправлено: NeoNox от 10 Января 2003, 19:42:16
а чем require в Perl тебя не устраивает?
сори, я не знаком с эффектом на PHP.
Название: Область видимости переменных
Отправлено: USE от 10 Января 2003, 19:46:39
Сначала надо сказать:
use mymodule;
а потом в пакете можешь создать функцию:

sub add_to_d()
{
     return "${_[0]}second";
}

вызвать ее в программе:

$d = add_to_d($d);
Название: Область видимости переменных
Отправлено: dymka от 10 Января 2003, 19:46:58
NeoNox сорри.. все пашет... устраивает и еще как...
просто по глупости ошибся... епрст.. с my работал, а не с our :)
пример свой тут перечитал и все ок :) заклинило так сказать...
больше нужно спать
USE не... у меня там с десяток другой переменных, поэтому я и не хочу делать через сабы... :)
Вернее у меня так и было через сабы, но хочется по цивильному ;)

Вопрос снят, всем спасибо!
PS. хороший форум, быстро отвечают ;)