package Enigmatic::RotorBox; use DAKKAR::p 'class'; use Enigmatic::Rotor; use MooseX::Types::Structured qw(Map); use MooseX::Types::Moose qw(Str); use Moose::Util::TypeConstraints; has rotorset => ( is => 'ro', isa => Map[Str,class_type('Enigmatic::Rotor')], lazy_build => 1, traits => ['Hash'], handles => { get => 'get', }, ); sub _build_rotorset { my %rotors = ( I => 'EKMFLGDQVZNTOWYHXUSPAIBRCJ', II => 'AJDKSIRUXBLHWTMCQGZNPYFVOE', III => 'BDFHJLCPRTXVZNYEIWGAKMUSQO', IV => 'ESOVPZJAYQUIRHXLNFTGKDCMWB', V => 'VZBRGITYUPSDNHLXAWMJQOFECK', VI => 'JPGVOUMFYQBENHZRDKASXLICTW', VII => 'NZJHGRCXMYSWBOUFAIVLPEKQDT', VIII => 'FKQHTLXOCBJSPDZRAMEWNIUYGV', Beta => 'LEYJVCNIXWPBQMDRTAKZGFUHOS', Gamma => 'FSOKANUERHMBTIYCWLQPZXVGJD', ); $_ = Enigmatic::Rotor->new($_) for values %rotors; return \%rotors; }