Perl 为什么';让我退出foreach循环?
我想计算包含一个单词的句子数。我有两个文件,一个包含句子,另一个包含单词,所以对于每个单词,我会计算包含这个单词的句子数 这是我的代码:Perl 为什么';让我退出foreach循环?,perl,counting,word-count,Perl,Counting,Word Count,我想计算包含一个单词的句子数。我有两个文件,一个包含句子,另一个包含单词,所以对于每个单词,我会计算包含这个单词的句子数 这是我的代码: use strict; use autodie; use autodie; open my $fh_resultat, ">:utf8", 'out'; use constant CORPUS_MOT => 'test'; use constant CORPUS_Phrases => 'phrases'; my @tab_MOT_CORPU
use strict;
use autodie;
use autodie;
open my $fh_resultat, ">:utf8", 'out';
use constant CORPUS_MOT => 'test';
use constant CORPUS_Phrases => 'phrases';
my @tab_MOT_CORPUS = do {
open my $fh1, "<:utf8", CORPUS_MOT;
map { split } <$fh1>;
};
my @tab_phrase_CORPUS = do {
open my $fh2, "<:utf8", CORPUS_Phrases;
map { split } <$fh2>;
};
foreach my $mot (@tab_MOT_CORPUS) {
my $nb_phrase = 0;
foreach my $ph (@tab_phrase_CORPUS) {
my @tab = split(/ /, $ph);
chomp @tab ;
#it should quit foreach if mot == val
foreach my $val(@tab) {
if ($mot eq $val) {
$nb_phrase = $nb_phrase + 1;
last;
}
}
}
print $fh_resultat "$mot:$nb_phrase\n";
}
print "$nbre_ligne\n";
结果应该是:
word1:1
word2:1
代码要求
@tab\u短语\u语料库包含行,但它包含单词
my @tab_phrase_CORPUS = do {
open my $fh2, "<:utf8", CORPUS_Phrases;
map { split } <$fh2>;
};
my@tab\u短语\u语料库=do{
打开我的$fh2,“代码期望@tab\u短语\u语料库
包含行,但它包含单词
my @tab_phrase_CORPUS = do {
open my $fh2, "<:utf8", CORPUS_Phrases;
map { split } <$fh2>;
};
my@tab\u短语\u语料库=do{
打开我的$fh2,“@tab
始终是一个元素数组,上面的foreach/last
没有意义。从映射{split}中删除map{split}
”
您有使用autodie;
两次,您没有使用警告;
@tab
始终是一个元素数组,并且上面的foreach/last
没有意义。从映射{split}中删除映射{split code>
您有使用autodie;
两次,并且没有使用警告;
。
my @tab_phrase_CORPUS = do {
open my $fh2, "<:utf8", CORPUS_Phrases;
map { chomp; $_ } <$fh2>;
};