#!/usr/bin/perl
use DBM::Deep;
my $scores = DBM::Deep->new( 'scores' );
foreach my $player ( sort keys %$scores )
{
$high_score = $scores->{$player}[-1]
if $scores->{$player}[-1] > $high_score;
print "$player has $scores->{$player}[-1]\n";
}
print "The high score was $high_score\n";
####
#!/usr/bin/perl
use DBM::Deep;
my $scores = DBM::Deep->new( 'scores' );
my %hash = map { $_, 1 } qw( Fred Barney );
foreach my $player ( sort keys %$scores )
{
$high_score = $scores->{$player}[-1]
if $scores->{$player}[-1] > $high_score;
next unless exists $hash{$player};
print "$player has $scores->{$player}[-1]\n";
}
print "The high score was $high_score\n";
##
##
#!/usr/bin/perl
use DBM::Deep;
my $scores = DBM::Deep->new( 'scores' );
my %hash = map { $_, 1 } qw( Fred Barney );
foreach my $player ( sort keys %$scores )
{
$high_score = $scores->{$player}[-1]
if $scores->{$player}[-1] > $high_score;
next unless exists $hash{$player};
my $sum = 0;
$sum += $scores->{$player}[$_] foreach ( 0 .. $#{ $scores->{$player} } );
my $average = $sum / ( $#{ $scores->{$player} } + 1 );
print "$player has $scores->{$player}[-1] with average $average\n";
}
print "The high score was $high_score\n";
##
##
#!/usr/bin/perl
use DBM::Deep;
my $scores = DBM::Deep->new( 'scores' );
my %hash = map { $_, 1 } qw( Fred Barney );
foreach my $player ( sort keys %$scores )
{
$high_score = last_score( $scores, $player )
if last_score( $scores, $player ) > $high_score;
next unless exists $hash{$player};
my $game_count = game_count( $scores, $player );
print "count is $game_count\n";
my $sum = 0;
$sum += score_n( $scores, $player, $_ ) foreach ( 1 .. $game_count );
my $average = $sum / $game_count;
print "$player has " . last_score( $scores, $player ) .
" with average $average\n";
}
print "The high score was $high_score\n";
sub last_score { $_[0]->{$_[1]}[-1] }
sub game_count { scalar @{ $_[0]->{$_[1]} } }
sub score_n { $_[0]->{$_[1]}[ $_[2] - 1 ] }
##
##
#!/usr/bin/perl
use DBM::Deep;
my $scores = DBM::Deep->new( 'scores' );
my %hash = map { $_, 1 } qw( Fred Barney );
foreach my $player ( sort keys %$scores )
{
$high_score = last_score( $scores, $player )
if last_score( $scores, $player ) > $high_score;
next unless exists $hash{$player};
print "$player has " . last_score( $scores, $player ) .
" with average " . average( $scores, $player ) . "\n";
}
print "The high score was $high_score\n";
sub last_score { $_[0]->{$_[1]}[-1] }
sub game_count { scalar @{ $_[0]->{$_[1]} } }
sub score_n { $_[0]->{$_[1]}[ $_[2] - 1 ] }
sub average { &sum / &game_count }
sub sum
{
my $sum = 0;
$sum += score_n( @_, $_ ) foreach ( 1 .. game_count( @_ ) );
$sum;
}
##
##
sub stats
{
@{ $_[0] }{ qw(name sum average last) } =
( $_[1], &sum, &average, &last_score );
}
##
##
#!/usr/bin/perl
use DBM::Deep;
my $scores = DBM::Deep->new( 'scores' );
my %hash = map { $_, stats( $scores, $_ ) } qw( Fred Barney );
foreach my $player ( sort keys %$scores )
{
$high_score = last_score( $scores, $player )
if last_score( $scores, $player ) > $high_score;
next unless exists $hash{$player};
print "$player has $hash{$player}{last} with average " .
"$hash{$player}{average}\n";
}
print "High score is " . $high_score . "\n";
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
sub last_score { score_n( @_, -1 ) }
sub game_count { scalar @{ $_[0]->{$_[1]} } }
sub score_n { $_[0]->{$_[1]}[ $_[2] - 1 ] }
sub average { &sum / &game_count }
sub sum
{
my $sum = 0;
$sum += score_n( @_, $_ ) for( 1 .. &game_count );
$sum;
}
sub stats
{
my %hash;
@hash{ qw(name sum average last) } =
( $_[1], &sum, &average, &last_score );
\%hash;
}
##
##
#!/usr/bin/perl
my @players = map Local::Scores->new($_), sort qw(Fred Barney);
foreach my $player ( @players )
{
my $name = $player->name;
print "Sum for $name is [" . $player->sum . "]\n";
print "Game count for $name is " . $player->game_count . "\n";
printf "%s has last score %d with average %.1f\n",
map { $player->$_ } qw( name last_score average );
}
print "High score is " . Local::Scores->high_score() . "\n";
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
package Local::Scores;
use DBM::Deep;
sub new {
bless
{ db => DBM::Deep->new( 'scores' ), name => $_[1] },
$_[0]
}
sub db { $_[0]->{db} }
sub name { $_[0]->{name} }
sub last_score { $_[0]->score_n( -1 ) }
sub game_count { scalar @{ $_[0]->db->{$_[0]->name} } }
sub score_n { $_[0]->db->{$_[0]->name}[ $_[1] - 1 ] }
sub average { $_[0]->sum / $_[0]->game_count }
sub sum
{
return $_[0]->{sum} if exists $_[0]->{sum};
$_[0]->{sum} += $_[0]->score_n( $_ ) for( 1 .. $_[0]->game_count );
$_[0]->{sum};
}
sub high_score { ... }
##
##
package Local::Scores;
use DBM::Deep;
__PACKAGE__->run( qw( Fred Barney ) ) unless caller();
sub new {
bless
{ db => DBM::Deep->new( 'scores' ), name => $_[1] },
$_[0]
}
sub run {
my $class = shift;
my @players = map $class->new($_), sort @_;
foreach my $player ( @players )
{
printf "%s has last score %d with average %.1f\n"
map { $player->$_ } qw( name last_score average );
}
print "High score is " . Local::Scores->high_score() . "\n";
}
sub db { $_[0]->{db} }
sub name { $_[0]->{name} }
sub last_score { $_[0]->score_n( -1 ) }
sub game_count { scalar @{ $_[0]->db->{$_[1]} } }
sub score_n { $_[0]->db->{$_[1]}[$_[2]] }
sub average { $_[0]->sum / $_[0]->game_count }
sub sum
{
return $_[0]->{sum} if exists $_[0]->{sum};
$_[0]->{sum} = $_[0]->score_n( $_ ) for( 1 .. $_[0]->game_count );
}
sub high_score { ... }
##
##
#!/usr/bin/perl
use DBM::Deep;
my $modules = DBM::Deep->new( 'bowling.db' );
foreach my $elem
(
[ Barney => [ 160, 200, 300, 240, 255, 195 ] ],
[ Fred => [ 175, 220, 230, 180, 260, 205 ] ],
[ Dino => [ 0, 0, 0, 0, 0, 30 ] ],
[ 'Mr. Slate' => [ 95, 80, 10, 90, 100, 120 ] ],
[ Wilma => [ 260, 250, 240, 250, 240, 240 ] ],
[ Betty => [ 250, 240, 200, 140, 215, 210 ] ],
)
{
$modules->{$elem->[0]} = $elem->[1];
}