Я ничего не знаю о тибетском письме. В приведенном ниже примере предполагается, что ваш словарь состоит из слов, за которыми следуют знак равенства и определение слова в каждой строке.
Он использует File :: Slurp для эффективного удаления файла в виде списка строк, chomp
s каждой строки и разбивает его, чтобы получить слово в качестве ключа и определение в качестве значения в хеше %dict
.
Предполагается, что @words
уже содержит отдельные слова, и слова не нужно идентифицировать из произвольного текста, такого как "a.a.b.a.b.b.a.a.b.a"
(см. Мое замечание, указывающее, что слова не разделены на тибетском языке, только слоги).
Чтобы изменить код для чтения словаря из внешнего файла, замените \*DATA
на имя файла.
#!/usr/bin/perl
use strict;
use warnings;
use File::Slurp;
my @words = qw( a b a.b b.a a.a b.a.b);
my %dict = map { chomp; split /\s*=\s*/ } read_file \*DATA;
for my $word ( @words ) {
if ( defined(my $defn = $dict{$word}) ) {
print "'$word' means $defn\n";
}
else {
print "'$word' not found\n";
}
}
__DATA__
a = Letter 1
b = Letter 2
a.b = Letter 1 and Letter 2
b.a = Letter 2 and Letter 1
a.b.a = Letter 1 and Letter 2 and Letter 1
b.a.b = Letter 2 and Letter 1 and Letter 2
Выход:
'a' means Letter 1
'b' means Letter 2
'a.b' means Letter 1 and Letter 2
'b.a' means Letter 2 and Letter 1
'a.a' not found
'b.a.b' means Letter 2 and Letter 1 and Letter 2