Sigh… “downside”.

> On Nov 3, 2019, at 2:32 PM, Philip Prindeville <

[hidden email]> wrote:

>

> What would be the downsize of having:

>

> my @hdrs = grep($uniq{$_}++, $pms->{msg}->get_header ($hdr));

>

> instead and counting ALL instances of $hdr, not just the unique RHS’s?

>

>

>

>> On Nov 3, 2019, at 1:51 PM, Philip Prindeville <

[hidden email]> wrote:

>>

>> Hi.

>>

>> I’m looking at:

>>

>> # Return true if the count of $hdr headers are within the given range

>> sub check_header_count_range {

>> my ($self, $pms, $hdr, $min, $max) = @_;

>> my %uniq = ();

>> my @hdrs = grep(!$uniq{$_}++, $pms->{msg}->get_header ($hdr));

>> return (scalar @hdrs >= $min && scalar @hdrs <= $max);

>> }

>>

>> in HeaderEval.pm and I’m not getting it. It inserts (once and only once) each occurrence of a unique RHS for the header X. So if I had:

>>

>> X-yzzy: A

>> X-yzzy: A

>> X-yzzy: B

>> X-yzzy: C

>>

>> Then $uniq{A} would be 2, $uniq${B} would be 1, and $uniq{C} would be 1, so the number of elements in @hdrs would be 3, once each for ‘A’, ‘B’, and ‘C’.

>>

>> But if I have:

>>

>> X-yzzy: A

>> X-yzzy: A

>> X-yzzy: A

>> X-yzzy: A

>>

>> then $uniq{A} is 4, but the number of elements in @hdrs would be 1 (because of the ‘!’ which only passes the first).

>>

>> This seems counter-intuitive. What if I want to count the absolute number of headers of type ‘X-yzzy:’ regardless of their RHS?

>>

>> I’ve been seeing a lot of Spam recently with duplicative Received-SPF: lines, but since they are all identical, it’s not nudging the number of @hdrs past one.

>>

>> Thanks,

>>

>> -Philip

>>

>