I am having a problem with using spanish characters in my hashes. If I use a spanish word for a key, ex. dígito verificador incorrecto., it will not return the hash value. I know the hash key and value exist in my hash table. Does anyone have any suggestions?
#!/usr/bin/perl
use warnings;
use strict;
## LAN filename for translation
my $filetwo="test2.txt";
## Translated debug file
my $fileout="out.txt";
my $linein;
my $englishword;
my $spanishword;
my %langhash;
my @arrayin;
## Open Lan file to read in the English and Spanish words
open (FILEIN2, $filetwo) or die "Can't open debug file to be translat
+ed.\n";;
open (FILEOUT, ">$fileout") or die "Can't open output file.\n";;
## Go through each line and replace
while ($linein = <FILEIN2>) {
chomp $linein;
@arrayin = split /:/, $linein; ##creates an array with
+ split function using : as separator
if (exists $arrayin[0] && $arrayin[0] eq "Default")
{
$englishword = $arrayin[1];
}
if (exists $arrayin[0] && $arrayin[0] eq "Spanish_LatinAmerica
+n|es_MX")
{
$spanishword = $arrayin[1];
}
if (exists $arrayin[0] && $arrayin[0] eq "Spanish_LatinAmerica
+n|es_MX")
{
$langhash{$spanishword} = $englishword;
}
}
## while (($spanishword, $englishword) = each %langhash){ ##Pr
+int entire hash tableS
## print "$englishword => $spanishword\n";
## }
close(FILEIN2);
close(FILEOUT);
##while (($spanishword, $englishword) = each %langhash){ ##Print en
+tire hash tableS
## print "$englishword => $spanishword\n";
## print "$langhash{$spanishword}\n";
## }
if (exists $langhash{'dígito verificador incorrecto.'}){
print "$langhash{'dígito verificador incorrecto.'}\n";
}
else
{
print "No match\n";
}
Test2.txt contents:
Comment:No Translation Needed
Default:digit incorrect.
Translate: FALSE
Spanish_LatinAmerican|es_MX:dígito verificador incorrecto.
Comment: This message is spoken to an operator when the "release licen
+se" voice command is used. The message confirms to the operator that
+the license was released.
Default:Say ready.
Translate: FALSE
Spanish_LatinAmerican|es_MX:listo.
Comment: This message is spoken to an operator when the "release licen
+se" voice command is used. The message confirms to the operator that
+the license was released.
Default:Reverse
Translate: FALSE
Spanish_LatinAmerican|es_MX:Forward