57 lines
1.4 KiB
Perl
57 lines
1.4 KiB
Perl
# 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.
|
|
|
|
|
|
|
|
|
|
|