use warnings;
use strict;
package PhaseManager;
sub new {
my ($class, @phases) = @_;
my %phaseHash = map {lc($phases[$_]) => lc($phases[$_ + 1] || '')}
0 .. $#phases;
return bless \%phaseHash, $class;
}
sub Next {
my ($self, $phase) = @_;
die "Unknown phase '$phase'" if !exists $self->{lc $phase};
return $self->{lc $phase};
}
package main;
my $manager = PhaseManager->new (qw'first second last');
my @testPhases = qw'first Second LAST FUBAR';
for my $currPhase (@testPhases) {
my $nextPhase = $manager->Next($currPhase) || '<No next phase>';
print "Phase '$currPhase' goes to '$nextPhase'\n";
}
Prints:
Phase 'first' goes to 'second'
Phase 'Second' goes to 'last'
Phase 'LAST' goes to '<No next phase>'
Unknown phase 'FUBAR' at D:\Delme~~\PerlScratch\delme.pl line 17.
Optimising for fewest key strokes only makes sense transmitting to Pluto or beyond
|