It might not really be what you want, but I believe it fits the specs:
#!/usr/bin/perl -wT
use strict;
my %validLanguages = (
"de" => "german",
"en" => "english",
"es" => "spanish",
"fr" => "french",
"it" => "italian",
"ja" => "japanise",
"ko" => "korean",
"ru" => "russian",
"sv" => "WHATS THIS",
"zh" => "WHATS THIS",
"zh_TW" => "WHATS THIS"
);
# test it
for ('dog','cat','de,en',' ',',,,','deensvzh') {
printf "%-10s %s a list of languages\n",
"'$_'",
(isItJustAListOfLanguages($_) ? "is" : "is NOT");
}
sub isItJustAListOfLanguages{
my $text = shift;
my @tokens = (keys %validLanguages, '\s',',');
my $tokenpatt = join('|',@tokens);
return $text =~ /^($tokenpatt)+$/;
}
__END__
'dog' is NOT a list of languages
'cat' is NOT a list of languages
'de,en' is a list of languages
' ' is a list of languages
',,,' is a list of languages
'deensvzh' is a list of languages
-Blake