Чтобы наследование работало, вам нужно вызывать свои функции как методы класса или объекта с помощью оператора ->
. Вы, кажется, поняли это для своего вызова к Test2->Main()
, но все методы, которые вы хотите вести себя OO-способом, должны вызываться таким образом.
package Test;
use strict;
use warnings;
sub Main
{
my $class = shift;
$class->SomeFunc() or die "Somefunc returned 0";
}
sub SomeFunc
{
return 1;
}
package Test2;
our @ISA = ("Test");
sub SomeFunc
{
return 0;
}
package main;
Test2->Main();
См. perlboot для подробного ознакомления и perltoot для более подробной информации.
Кроме того, не ставьте скобки после имен подпрограмм, когда вы их объявляете - это не делает то, что вы думаете.