File: visitor.pl

package info (click to toggle)
libsoap-wsdl-perl 3.004-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 2,600 kB
  • sloc: perl: 8,433; xml: 1,769; java: 19; makefile: 15
file content (26 lines) | stat: -rw-r--r-- 551 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package PersonVisitor;
use Class::Std;    # handles all basic stuff like constructors etc.

sub visit_Person {
    my ( $self, $object ) = @_;
    print "Person name is ", $object->get_name(), "\n";
}

package Person;
use Class::Std;
my %name : ATTR(:name<name> :default<anonymous>);

sub accept { $_[1]->visit_Person( $_[0] ) }

package main;
my @person_from = ();
for (qw(Gamma Helm Johnson Vlissides)) {
    push @person_from, Person->new( { name => $_ } );
}

my $visitor = PersonVisitor->new();
for (@person_from) {
    $_->accept($visitor);
}