Автор Тема: Область видимости переменных  (Прочитано 3698 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dymka

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Область видимости переменных
« : 10 Января 2003, 18:44:49 »
хотелось бы сделать следущее:
попользоваться переменными,
затем какбы включить другой файл,
где производятся манипуляции с этими переменными
затем продолжить, работу с уже измененными переменными
т.е. нужно обеспечить глобальность переменных...
Глобальных переменных в перле вроде бы и нет, но может можно обойти сие ограничение... ???
чота у меня не получается пока никак.. :(

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Область видимости переменных
« Ответ #1 : 10 Января 2003, 18:52:04 »
A return() никак задействовать не получается?
И ссылки кстати тоже очень даже помагают.
Или я твою проблему не понял? Может все проще.
The documentations is your friend

Оффлайн dymka

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Область видимости переменных
« Ответ #2 : 10 Января 2003, 19:08:21 »
понял как я понял, но:
1. Возвращать весь ворох переменных громоздко... или я неправильно понял... ???
2. Ссылки тоже... громоздко... или опять же неправильно понял...
Хочется просто...
Еще раз: просто есть код, общий для разных скриптов..
и код должен работать с переменными главного скрипта...
причем код идентичен... чтобы в каждом скрипте не повторяться, пришла идея использовать код один раз, но
встрял на грабли...

Оффлайн USE

  • Любитель
  • Ветеран
  • *****
  • Сообщений: 720
  • +0/-0
  • 2
    • Просмотр профиля
Область видимости переменных
« Ответ #3 : 10 Января 2003, 19:15:53 »
А попробовать создать свой модуль и можно переменные пользовать туда-сюда. Подойдет?
Не ходите, дети, без «Мозиллы» дальше localhost!

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Область видимости переменных
« Ответ #4 : 10 Января 2003, 19:20:49 »
1. Делай их локальными, в пределах видимости саба или куска кода а потом прибивай. подумай над perldoc perlsub
2. Ничего это не громоздко.
Цитировать
Еще раз: просто есть код, общий для разных скриптов..

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

...будет
Цитировать
причем код идентичен... чтобы в каждом скрипте не повторяться, пришла идея использовать код один раз, но
встрял на грабли...
Вывод: Создай модуль иначе сам создашь отличную грядку плотноуложенных граблей.
The documentations is your friend

Оффлайн dymka

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Область видимости переменных
« Ответ #5 : 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

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Область видимости переменных
« Ответ #6 : 10 Января 2003, 19:33:50 »
народ... сорри.. торможу жестоко... стока пить неззя...
достаточно объявить процедуру и вызвать один раз... меня это устраивает!
правда я хотел эффекта require в php... хотя может оно и существует... решение... как в пхп...

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Область видимости переменных
« Ответ #7 : 10 Января 2003, 19:42:16 »
а чем require в Perl тебя не устраивает?
сори, я не знаком с эффектом на PHP.
The documentations is your friend

Оффлайн USE

  • Любитель
  • Ветеран
  • *****
  • Сообщений: 720
  • +0/-0
  • 2
    • Просмотр профиля
Область видимости переменных
« Ответ #8 : 10 Января 2003, 19:46:39 »
Сначала надо сказать:
use mymodule;
а потом в пакете можешь создать функцию:

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

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

$d = add_to_d($d);
Не ходите, дети, без «Мозиллы» дальше localhost!

Оффлайн dymka

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 36
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Область видимости переменных
« Ответ #9 : 10 Января 2003, 19:46:58 »
NeoNox сорри.. все пашет... устраивает и еще как...
просто по глупости ошибся... епрст.. с my работал, а не с our :)
пример свой тут перечитал и все ок :) заклинило так сказать...
больше нужно спать
USE не... у меня там с десяток другой переменных, поэтому я и не хочу делать через сабы... :)
Вернее у меня так и было через сабы, но хочется по цивильному ;)

Вопрос снят, всем спасибо!
PS. хороший форум, быстро отвечают ;)
« Последнее редактирование: 10 Января 2003, 22:36:10 от dymka »

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28