On May 23, Elias Assmann said:
>On Thu, 23 May 2002, Jeff 'japhy' Pinyan wrote:
>
>> On May 23, Craig Hammer said:
>>
>> >Very nice explanation. One thing though, I am not using uniq to remove
>> >duplicates. I am using it to get a count of duplicates. In my case, I am
>> >creating a threshhold to determine when someone (malicious) is scanning my
>> >address ranges.
>>
>> Ah, I see. Well then, you can use either method to obtain the count:
>>
>> # a -- from perlfaq4
>> my $prev = "NO_SUCH_VALUE";
>> my $dup = 0;
>> my @sorted = grep { $_ ne $prev ? $prev = $_ : ++$dup } sort @records;
>
>Correct me if I'm wrong, but I don't think this does what Craig wants,
>since $dup would end up containing all the values of %seen from b)
>added up, with no indication of how many values were seen more than
>once, how often each of these was seen or what those values were (all
>of which I assume to be interesting in this case).
Oh, well if that's what he wants, then the hash solution is the most
powerful:
my %seen;
$seen{$_}++ for @sorted = sort @records;
Now you have %seen, which holds each element of @sorted and how many times
it appeared. Thus:
@duplicates = grep $seen{$_} == 1, keys %seen;
and their corresponding counts:
print "$_ seen $seen{$_} times\n" for @duplicates;
--
Jeff "japhy" Pinyan [EMAIL PROTECTED] http://www.pobox.com/~japhy/
RPI Acacia brother #734 http://www.perlmonks.org/ http://www.cpan.org/
** Look for "Regular Expressions in Perl" published by Manning, in 2002 **
<stu> what does y/// stand for? <tenderpuss> why, yansliterate of course.
[ I'm looking for programming work. If you like my work, let me know. ]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]