1#!./perl 2 3use strict; 4use warnings; 5use utf8; 6use open qw( :utf8 :std ); 7require q(./test.pl); plan(tests => 1); 8 9 10=pod 11 12example taken from: L<http://www.opendylan.org/books/drm/Method_Dispatch> 13 14 옵젳Ṯ 15 ^ 16 | 17 ᓕᵮꡠFᚖᶭ 18 ^ ^ 19 / \ 20 SㄣチenŦ 빞엗ᱞ 21 ^ ^ 22 | | 23 ᕟ텔li겐ț Hʉ만ӫ읻 24 ^ ^ 25 \ / 26 ቩᓪ찬 27 28 define class <SㄣチenŦ> (<life-form>) end class; 29 define class <빞엗ᱞ> (<life-form>) end class; 30 define class <ᕟ텔li겐ț> (<SㄣチenŦ>) end class; 31 define class <Hʉ만ӫ읻> (<빞엗ᱞ>) end class; 32 define class <ቩᓪ찬> (<ᕟ텔li겐ț>, <Hʉ만ӫ읻>) end class; 33 34=cut 35 36{ 37 package 옵젳Ṯ; 38 use mro 'dfs'; 39 40 package ᓕᵮꡠFᚖᶭ; 41 use mro 'dfs'; 42 use base '옵젳Ṯ'; 43 44 package SㄣチenŦ; 45 use mro 'dfs'; 46 use base 'ᓕᵮꡠFᚖᶭ'; 47 48 package 빞엗ᱞ; 49 use mro 'dfs'; 50 use base 'ᓕᵮꡠFᚖᶭ'; 51 52 package ᕟ텔li겐ț; 53 use mro 'dfs'; 54 use base 'SㄣチenŦ'; 55 56 package Hʉ만ӫ읻; 57 use mro 'dfs'; 58 use base '빞엗ᱞ'; 59 60 package ቩᓪ찬; 61 use mro 'dfs'; 62 use base ('ᕟ텔li겐ț', 'Hʉ만ӫ읻'); 63} 64 65ok(eq_array( 66 mro::get_linear_isa('ቩᓪ찬'), 67 [ qw(ቩᓪ찬 ᕟ텔li겐ț SㄣチenŦ ᓕᵮꡠFᚖᶭ 옵젳Ṯ Hʉ만ӫ읻 빞엗ᱞ) ] 68), '... got the right MRO for the ቩᓪ찬 Dylan Example'); 69