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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подпрограммы 
:(
    Опции темы
GShadrin
  Дата 15.10.2009, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Есть имя функции в скалярной переменной.
Задача запустить функцию с этим именем, причем она находится в другом пакете, причем в нее передаются аргументы, причем она возвращает массив.
Пытался написать так
Код

($a, $b)=com::&$new_comand($c, $d);

ничего не вышло
пробывал другие варианты, переставлял амперсанд ничего не выходит

раньше было:
Код

$a=&$new_comand;

оно работало

Но в силу разрастания программы возникла необходимость разбиения на пакеты и избавление от излишних глобальных переменных.

Как реализовать такой вызов функции?
PM MAIL   Вверх
arto
Дата 15.10.2009, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

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



com->$new_command (..) ?

следите за первым аргументом
PM MAIL ICQ   Вверх
KSURi
Дата 16.10.2009, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если инвокант не нужен, то можно так:
Код

$new_command = "package::$new_command";
$new_command->($a, $b);


Это сообщение отредактировал(а) KSURi - 16.10.2009, 09:15


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
GShadrin
  Дата 16.10.2009, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



попробывал написать 
($a, $b) = com->$new_comand($c, $d) ;
в пакет не передаются $c, $d
как работает '->' ?
Мне надо вызвать программу из другого пакета, передавая в нее параметры и принимая ответ от нее
т.е. хочу передать в нее $c, $d
и получить $a, $b
PM MAIL   Вверх
arto
Дата 19.10.2009, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

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



# perl -le 'package com; sub aa ($$) { return ($_[1]+1,$_[2]+1) } package main; $a = "aa"; print join "\n",com->$a (1,2)'
2
3

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


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

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


 




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


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

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