use strict; use warnings; my %tasks = ( read => [qw(book novel magazine)], eat => [qw(apple banana)], play => [qw(football tennis)], ); for my $task (sort keys %tasks) { my @objects = @{$tasks{$task}}; print "I can $task a "; print join ', ', @objects[0 .. $#objects - 1]; print " and a $objects[-1]" if @objects > 1; print ".\n"; }