Учитывая объект, как я могу узнать его класс в Perl? - PullRequest
2 голосов
/ 27 июня 2011

Мне нужна эта информация, чтобы решить, какой из классов с определенным методом вызывается.

Ответы [ 3 ]

8 голосов
/ 27 июня 2011

ref обычно работает нормально, но blessed в Scalar :: Util может быть лучшим выбором.Он вернет undef для простых ссылок, которые, например, не включены в пакет.

8 голосов
/ 27 июня 2011

Вы используете встроенную функцию ref для определения ссылочного типа или класса переменной:

my $obj = bless [] => 'Some::Class';

print ref($obj), "\n";  # 'Some::Class';

Более подробную информацию можно найти с Scalar::Util reftype (всегда возвращает тип контейнера) и blessed (всегда возвращает имя класса).

0 голосов
/ 27 июня 2011

ref($obj) сделает всю работу за вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...