sub key(_) { join "", sort split //, [110] Если у вас был словарь,
sub key(_) { join "", sort split //, [110] Если у вас был словарь,
[111][0] }
my $dict_qfn = "...";
my $search = "pool";
my %anagrams;
{
open(my $fh, '<', $dict_qfn)
or die("Can't open \"$dict_qfn\": $!\n");
while (<$fh>) {
chomp;
push @{ $anagrams{ key([110] Если у вас был словарь,
[111]) } }, [110] Если у вас был словарь,
[111];
}
}
my @results = grep { [110] Если у вас был словарь,
[111] ne $search } @{ $anagrams{$search} // [] };
say "Anagrams of $search: ".( @results ? "@results" : "[none]" );
[0] }
if (key("pool") eq key("polo") {
say "Pool and polo are anagrams of each other.";
} else {
say "Pool and polo aren't anagrams of each other.";
}
Если у вас был словарь,
sub key(_) { join "", sort split //, [110] Если у вас был словарь,
[111][0] }
my $dict_qfn = "...";
my $search = "pool";
my %anagrams;
{
open(my $fh, '<', $dict_qfn)
or die("Can't open \"$dict_qfn\": $!\n");
while (<$fh>) {
chomp;
push @{ $anagrams{ key([110] Если у вас был словарь,
[111]) } }, [110] Если у вас был словарь,
[111];
}
}
my @results = grep { [110] Если у вас был словарь,
[111] ne $search } @{ $anagrams{$search} // [] };
say "Anagrams of $search: ".( @results ? "@results" : "[none]" );
numResults
a MatchData
возразите и не может быть по сравнению с >
метод. Необходимо преобразовать его в строку, затем преобразовать строку в число:
while(numResults.to_s.to_i > 0)
В случаях, где строка не соответствует выражению, numResults
будет nil
таким образом, если это будет тем, на что Вы тестируете, то Вы захотите
while( !numResults.nil? ){
}
В случаях, где строка действительно соответствует выражению, numResults
не будет nil
, и дополнительно, будет содержать количество соответствий (только 1 самое большее здесь, потому что у Вас нет повторяющегося соответствия) в numResults.size
Кроме того, другие плакаты должны иметь в виду это numResults
не содержит количества найденных соответствий, но содержит значение фактического соответствия от текстовых данных.
В то время как
numResults.to_s.to_i
Мог бы работать, его единственное должное к изяществу nil.to_s.to_i == 0
.
Если Вы полагались numResults
чтобы быть чем-либо значимым с точки зрения regex соответствуют количеству, Вы смотрели в неправильном месте.
Попытайтесь изменить Ваш в то время как условие к:
while(numResults.to_i > 0)
Это вызовет numResults к целому числу. Похоже, что это возвращается как строка от Вас regexp matcher.