1
首先感谢您抽出宝贵时间看一下。Perl:使用foreach循环从哈希中打印前25个值
我是新来的perl,而且我在学习的每一门该死的语言中都与计数相抗争......猜猜我小时候掉了太多次。我正在运行脚本grep安全日志通过ssh登录失败。
我想只打印此代码的前25个结果,但我所尝试的所有内容似乎都没有做到这一点(而另一个foreach):/希望得到一些想法,然后facepalm自己。这也是后期......是啊,就是这样......这就是为什么我很愚蠢
# list each IP ($z) and number of attempts ($count{$z}, sort by highest amount of attempts
foreach $z (sort { $count{$b} <=> $count{$a} } (keys %count)) {
@geoData= &getGeo($z); # use subroutine getGeo to get location info
$cityName = $geoData[0]; # extract city from location info
$countryCode = $geoData[1]; # extract country code from location info
$reg = $geoData[2]; # extract country code digit
printf " %4d %-20s %-3s %-6s %-20s\n", $count{ $z }, $z, $countryCode, $reg, $cityName;
}
下面是输出的将是什么样子,它只是列举了数百IP的,我只是想25
=======================Intrusion Report=======================
Count Remote IP Address Country City
==============================================================
7427 182.x.x.x IN
4091 200.x.x.x DO 05 Santo Domingo
2808 42.x.x.x CN
2223 114.x.x.x CN 23 Shanghai
1958 122.x.x.x CN 02 Hangzhou
1915 202.x.x.x ID 04 Jakarta
1410 klinikk.x.x.x RU 47 Klin
1190 195.x.x.x DE 16 Berlin
805 60.x.x.x CN 01 Hefei
646 tango054.x.x.x DE
645 216.x.x.x US CA Canyon Country
645 72.x.x.x US CA Canyon Country
583 61.x.x.x CN 02 Wenzhou
预先感谢您!
哇,welp我没有看到我的书。我习惯于按照i ++或其他任何方式来做某件事,但仍然在学习。谢谢你,谢谢你,谢谢你!!!!!!!!!!!!!!!等等,我很快就说过了,它不按预期打印 – thewrp
@thewrp:不客气。不要忘记接受答案(它也会提升你的代表) – Zaid
它似乎从我的散列中随机打印25个具体值,仍然以降序排列,但除此之外我看不到一个模式:( – thewrp