# Vi prøver oss på nytt, og lager en fil som vi kaller Hello.pm package Hello2; # Nesten som før... sub new { # Vanlig navn på en konstruktor er "new" - ingen tvang! my $package = shift; # første argument er alltid en referanse # til my $navn = shift; my $kjonn = shift; die "new() skal ha 2 argumenter" if @_; die "$navn sitt kjønn må være 'M' eller 'K'! (ikke '$kjonn')\n" unless $kjonn =~ m/^[MK]$/; my $person = { navn => $navn, kjonn => $kjonn, _ant_hils => 0 }; bless( $person, $package ); # Her knytter vi $person til # $package, slik at vi får # effekten av en klasse. return $person; } sub hils { my $self = shift; my $hva = $self->{kjonn} eq "M" ? "han" : "hun"; my $hvem = $self->{navn}; $self->{_ant_hils}++; # hvor mange ganger "jeg" er blitt hilst på? return "Nei, se! Der har vi jo $hva $hvem!\n"; } sub vis_ant_hilsninger { my $self = shift; return $self->{_ant_hils}; } sub vis_navn { my $self = shift; return $self->{navn}; } sub vis_kjonn { my $self = shift; return $self->{kjonn}; } 1; # Så avslutter vi med en sann verdi.