# 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.