Forum Webscript.Ru
Программирование => Perl => Тема начата: DartSidius от 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
почему то ничего не передаётся :(
-
А test1 кто будет вызывать, Пушкин?
Зря ты не следуешь совету читать перед тем как писать.
-
Шо за глупости....скрипт примерный...конечно ж я вызываю test1....
если тебе так нравится, то &test1; - вызвал :)
но результата нет на выходе
-
# 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
-
вроде разобрался...только обнаружил такой прикол...допустим если мы вызвали Module->func("aaa","bbb","ccc"); , то нулевое $_[0] будет не aaa а Module...почему так?
-
Это не "прикол" а "фича".
При вызове Module->func("aaa") $_[0] содержит имя пакета а $_[1] "ааа"
При вызове Module::func("aaa") $_[0] содержит "ааа"
Вообще это гадание на кофейной гуще, настоятельный совет - читать документацию перед тем как писать, иначе будет чушь, которую ты сейчас написал.
-
кстати у меня когда вызываешь функцию так Module::func("aaa"), выдаётся Too many arguments for Module::func at index.cgi line 12, near ");"
а если так, то всё нормуль
&Module::func("aaa")