$ENV{HTTP_ACCEPT_LANGUAGE} #### my $base_dir_abs = "/var/www/templates"; my $default_lang = 'en'; my $lang = lc $ENV{'HTTP_ACCEPT_LANGUAGE'} my @dirs = ("$base_dir_abs/$default_lang"); if ($lang && $lang ne $default_lang && $lang =~ /^(\w{2})/ # may look like "en-us" && -d "$base_dir_abs/$1") { unshift @dirs, "$base_dir_abs/$1"; } my $tt = Template->new({ INCLUDE_PATH => \@dirs }); $tt->process($file); OR my $ht = HTML::Template->new( filename => $file, path => \@dirs, ); #### # Your directory structure may look like /var/www/templates/en/my_cgi/index.html /var/www/templates/en/my_cgi/step2.html /var/www/templates/en/my_cgi/step3.html /var/www/templates/en/another_cgi/index.html /var/www/templates/sp/my_cgi/index.html /var/www/templates/sp/my_cgi/step2.html /var/www/templates/sp/another_cgi/index.html