package ConcreteVisitor1; use strict; use base qw(Visitor); sub new { my $class = shift; my $self = {}; bless $self, $class; } sub visitConcreteElementA { my $self = shift; my $element = shift; $element->operationA(); } sub visitConcreteElementB { my $self = shift; my $element = shift; $element->operationB(); } 1;