#!/usr/bin/env perl use strict; use warnings; my %all_voices = ( 'Microsoft Hedda Desktop - German' => 3, 'Microsoft Haruka Desktop - Japanese' => 4, 'Microsoft Zira Desktop - English (United States)' => 0, 'Microsoft Hazel Desktop - English (Great Britain)' => 1, 'Microsoft David Desktop - English (United States)' => 2, 'Microsoft Huihui Desktop - Chinese (Simplified)' => 5 ); for my $language (qw{German Japanese French English Chinese}) { my @available_voices = grep /^[^-]+-\s+$language/, keys %all_voices; if (@available_voices) { my $first_voice = ( sort { $all_voices{$a} <=> $all_voices{$b} } @available_voices )[0]; printf "%8s : [%d] %s\n", $language, $all_voices{$first_voice}, $first_voice; } else { printf "%8s : No voice found\n", $language; } }