my $al = $r->header_in("Accept-Language"); if ($al =~ /,/ && $al !~ /;/) { my @l = grep length($_)>0, split m{\s*,\s*}, $al; $al = join ",", map { sprintf "%s;q=%4.2f", $l[$_], 1-$_/scalar(@l) } 0..$#l; } my $hhh = HTTP::Headers->new("Accept-Language", $al); my $variants = [ ['ja', 1, undef, undef, undef, 'ja', undef], ['de', 1, undef, undef, undef, 'de', undef], ]; @langprefs = map { $_->[0] } grep {$_->[1] > 0} HTTP::Negotiate::choose($variants, $hhh);