#! perl -slw 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" ); my $re_langs = join'|', keys %validLanguages; $re_langs = qr[\s*(?:$re_langs)\s*(?:,|$)]io; sub isOnlyLangs{ my ($string) = @_; $string =~ s[$re_langs][]g; $string =~ m[^\s*$]; } sub isOnlyLangs_{ (my $s = $_[0]) =~ s[$re_langs][]g; !$s; } print isOnlyLangs($_) ? 'Passed : ' : 'Failed : ', "'$_'" for 'de, en, fr, ja', ' de , en , fr , ja , ', 'monkish fr, en', 'monkish, fr, en', 'FR', 'Fr', 'fr en', 'fr , en,', 'zh_tw';