perl数组中最多的元素(用perl实现,得到一个数组中重复次数最多的元素)

本文目录
用perl实现,得到一个数组中重复次数最多的元素
代码我试了是可以的,没有采用返回,而是用打印的方式输出的
sub getmaxocc
{
($input)=@_;
for(@$input)
{
$occ{$_} +=1;
}
$maxocc = (sort {$b 《=》 $a} values %occ);
while(my($k,$v)=each%occ){
if($v == $maxocc )
{
print "$k ";
}
}
}
getmaxocc( );
perl子数组问题
我很不想说,但您彻头彻尾地错了,没有一个地方说对。您知道不知道Perl奇怪的写法究竟是什么含义?而且这两句话就这么简单,您问之前都舍不得自个儿试一下?这不是个好习惯
数组切片赋值,有4种写法,取决于两边是匿名的还是定义的:
@array1
@array1 = (value1,value2,...)
(scalar1,scalar2,...) = @array2
(scalar1,scalar2,...) = (value1,value2,...)
不管哪一种表示,等号两边其实都是一个数组,更确切地说是若干按顺序排列起来的变量。数组切片赋值表示,把等号右边的数组的每一个元素的值,依次赋给等号前面相同位置的元素。并且,这个过程其实是转存的,或者说从表面上看没有时间先后之分的,因此不存在前后变量有交叉导致的诡异结果。如果等号右边的元素比左边多,则右边末尾多出的元素被忽略;如果左边的元素比右边多,则左边末尾多出的元素值为undef
第一句话@array没有被赋值。所以这句话的运行结果是:
@array : (undef,1,2,3)
第二句话@array)值都为undef。那么,同理可以得到,赋值后的结果是:
@array : (undef,3,2,undef)
第二句话变成@array,可以看出@array元素数目没变。同理可以得到,运行结果是:
@array : (undef,3,2,1)
两个建议:
第一,不要沉迷于Perl怪异的语法,你玩怪异语法之前你首先要知道她本质是什么,你才真正玩得起她;否则不是你玩她而是她玩你!语句一复杂管保你脑子昏了。即使是程序员,在准备写怪异的句子时都会三思,如果这个句子让我脑子不清楚,或者在不同的编译器下有歧义,我宁可像白痴一样写1+1我都不会用那些华丽的装13句子。程序的第一原则是:不出错!
第二,多动手多做实验。像这么简单的句子你多试几次自己就明白了,哪还用上百度来问?平心而论编程是最好做的实验,因为你立刻就能看到效果;你要做个什么物理实验化学实验生物实验,等个十天半个月,甚至几年才出一个结果:这成本比玩程序高太多了!
perl脚本 数组使用问题,求大神指导
当 @array 独立地存在於一个表达式 (expression) 的时间, 他的身份是 "数组", 那就是 56789
当 @array 在一个表达式中与其他"东西"一起操作时, 他的身份是 "有几个元素" .
这是... Perl 语言的文法.
其实两样都是很常用的技巧, 如果要做到你想要的效果, 你该写成
print "@arry\n";
另一个情况是, 比如我们要检查一个 sub 有没有足够的参数, 很多时就会写成 :
sub test {
if ( @_ 《 2 ) {
print "Not enough argument";
return
}
else {
print "OK"
}
}
test ( "Hello" ) ; # Not enough argument
test ( "Hello", "World" ) ; # OK

更多文章:
perl数组中最多的元素(用perl实现,得到一个数组中重复次数最多的元素)
2026年10月10日 17:00
oracle11g端口映射客户端频繁掉线(oracle本地进行连接的时候报错ORA-12560: TNS: 协议适配器错误)
2026年10月10日 16:10
vb程序设计里面的x是啥(VB程序设计中的变量是如何定义的,请大家帮帮忙告诉我)
2026年10月10日 10:40
java定时器每一分钟执行一次(java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现)
2026年10月10日 08:50
abap开发工作经历(目前,从事的是ABAP开发的不知道做这个有没有什么前途啊好的话,我会加分的~)
2026年10月10日 01:10




