package Role::Specimen; use Moose::Role; #requires qw(specimen_map); sub do_specimens { my $self = shift; my $vals = shift; my $specimen_map = $self->specimen_map; # extract unique specimen codes: my @specimens = keys %{ { map { $_ => 1 } split ', ', $vals->{specimen} } }; SPECIMEN: foreach my $specimen(@specimens) { # warn $specimen; if ( my $specimen_id = $specimen_map->{$specimen} ) { # warn $specimen_id; my %data = ( request_id => $vals->{_request_id}, specimen_id => $specimen_id, ); $self->db->{dbix4}->insert('request_specimen', \%data); } else { print "no such sample_code: $specimen\n"; next SPECIMEN; } } } 1;