#!/usr/bin/perl use strict; use warnings; { package Foo; sub new { bless {} => shift } sub name { return 'telcontar' } } my $method = sub { return shift->name }; print Foo->new->$method; #### sub access { my ( $self, $x, $y ) = splice @_, 0, 3; my $method = $self->{crefs}{$x}{$y}; return $self->$method(@_); }