Автор Тема: Вызов подпрограммы из модуля  (Прочитано 3518 раз)

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

Оффлайн DartSidius

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 309
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вызов подпрограммы из модуля
« : 14 Ноября 2006, 12:48:53 »
короче такая тема...


есть модуль Module.pm

скрипт test.pl

в нём

use Module;

sub test1{
   Module->func("aaa","bbb","ccc");
}


sub test2 {
     print "$_[0],$_[1],$_[2}";
}

текст модуля:

package Module;

sub func() {
     main->test2($_[0]);
}


короче говоря из тест 1 вызываю функцию из модуля, которая в свою очередь должна передать в test2 то, что её дала test1

почему то ничего не передаётся :(

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Вызов подпрограммы из модуля
« Ответ #1 : 14 Ноября 2006, 13:47:48 »
А test1 кто будет вызывать, Пушкин?
Зря ты не следуешь совету читать перед тем как писать.
The documentations is your friend

Оффлайн DartSidius

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 309
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вызов подпрограммы из модуля
« Ответ #2 : 14 Ноября 2006, 14:25:49 »
Шо за глупости....скрипт примерный...конечно ж я вызываю test1....

если тебе так нравится, то &test1; - вызвал :)

но результата нет на выходе

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Вызов подпрограммы из модуля
« Ответ #3 : 14 Ноября 2006, 14:33:27 »
# cat ./*
package Module;

sub func() {
        
main->test2($_[0]);
}

1;#!/usr/bin/perl
use strict;
use 
warnings;

use 
Module;

sub test1{
        
Module->func("aaa","bbb","ccc");
}


sub test2 {
        print 
$_[1];
}

test1;

# ./test.pl
Module
The documentations is your friend

Оффлайн DartSidius

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 309
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вызов подпрограммы из модуля
« Ответ #4 : 14 Ноября 2006, 14:42:58 »
вроде разобрался...только обнаружил такой прикол...допустим если мы вызвали Module->func("aaa","bbb","ccc"); , то нулевое $_[0] будет не aaa а Module...почему так?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Вызов подпрограммы из модуля
« Ответ #5 : 14 Ноября 2006, 15:07:42 »
Это не "прикол" а "фича".

При вызове Module->func("aaa") $_[0] содержит имя пакета а $_[1] "ааа"
При вызове Module::func("aaa") $_[0] содержит "ааа"

Вообще это гадание на кофейной гуще, настоятельный совет - читать документацию перед тем как писать, иначе будет чушь, которую ты сейчас написал.
The documentations is your friend

Оффлайн DartSidius

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 309
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Вызов подпрограммы из модуля
« Ответ #6 : 14 Ноября 2006, 15:32:13 »
кстати у меня когда вызываешь функцию так Module::func("aaa"), выдаётся  Too many arguments for Module::func at index.cgi line 12, near ");"

а если так, то всё нормуль
&Module::func("aaa")
« Последнее редактирование: 14 Ноября 2006, 17:55:25 от DartSidius »

 

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