Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 为什么';让我退出foreach循环?_Perl_Counting_Word Count - Fatal编程技术网

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>;
};