Мне неизвестен особенно хороший способ сделать это, но есть несколько менее приятных способов, таких как эта программа:
#!/usr/bin/perl -w
use strict;
package Test::Class1;
sub static_method {
print join(", ", @_) . "\n";
}
package main;
my $class = "Test::Class1";
{
no strict "refs";
&{${class}. "::static_method"}(1, 2, 3);
}
Я включил переменную $class
, так как именно так вы задали вопрос, и она иллюстрирует, как можно выбрать имя класса во время выполнения, но если вы знаете класс заранее, вы могли бы так же легко вызвать &{"Test::Class1::static_method"}(1, 2, 3);
Обратите внимание, что вы должны выключить strict "refs"
, если он включен.