Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.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中重复它们? #/usr/bin/perl 打印“数组中有多少个字?\n”; $x=; $i=0; 而($i_Perl - Fatal编程技术网

如何在数组中找到多少相同的单词,而不在perl中重复它们? #/usr/bin/perl 打印“数组中有多少个字?\n”; $x=; $i=0; 而($i

如何在数组中找到多少相同的单词,而不在perl中重复它们? #/usr/bin/perl 打印“数组中有多少个字?\n”; $x=; $i=0; 而($i,perl,Perl,所以,如果我输入我想在数组中有5个单词,“hello”和“bye”,我会得到如下结果: 你好 重复3次 你好 重复3次 你好 重复3次 再见 重复2次 再见 重复2次 我怎样才能得到这样的结果: hello重复3次 再见重复2次 我的意思是如何避免相同的单词检查?首先:始终在脚本中添加使用严格的使用警告。你会省去很多心痛。第二,当单词出现在STDIN中时,你需要记住它们,否则它们将包括尾随的换行符 我将按如下方式进行讨论。使用散列(或字典)存储作为关键字输入的每个单词,以及它被视为值的次数。在这

所以,如果我输入我想在数组中有5个单词,“hello”和“bye”,我会得到如下结果:

你好
重复3次
你好
重复3次
你好
重复3次
再见
重复2次
再见
重复2次

我怎样才能得到这样的结果:

hello重复3次 再见重复2次


我的意思是如何避免相同的单词检查?

首先:始终在脚本中添加
使用严格的
使用警告。你会省去很多心痛。第二,当单词出现在STDIN中时,你需要记住它们,否则它们将包括尾随的换行符

我将按如下方式进行讨论。使用散列(或字典)存储作为关键字输入的每个单词,以及它被视为值的次数。在这里输入hello三次将产生一个键,
hello
,与值
3
关联

#!/usr/bin/perl
print "How many words in array?\n";
$x = <STDIN>;
$i = 0;

while($i < $x ){
print "Enter $i word\n";
$y = <STDIN>;
$arr[$i]= $y;
$i++;
};

$i = 0;
$hm = @arr;

for (my $i=0; $i < $hm; $i++){
my $many = grep(/$arr[$i]/, @arr);
print "$arr[$i] repeats $many times\n";
}

使用散列。使用本网站上的搜索功能——这个问题(或其变体)以前被问过很多次。请在每个perl程序的顶部使用
Use strict
Use warnings
。你能解释一下这一行是如何工作的吗<代码>$words{$y}++我的意思是你为什么使用++?哦。。。现在我明白了。。。对不起,我问了你一个愚蠢的问题,谢谢你;DIt与写入
$words{$y}+=1
相同,它第一次看到hello时,值是
1
,第二次增加1到
2
。。
print "How many words in array?\n";

my $x = <STDIN>;
my $i = 0;

my %words;

while($i < $x ){
    print "Enter $i word\n";
    my $y = <STDIN>;
    chomp($y);
    $words{$y}++;
    $i++;
for my $w (keys %words){
    print "$w repeats $words{$w} times ";
}

print "\n";