I get an error like 'Argument "6.21_03" isn't numeric'
Somebody else reported a similar error (in combination with Net::DNS) when spamd starts up:
In those cases these are actually warnings and no errors and are caused by some bug in Perl (reproduced with 5.8.4 and 5.8.5). Underscores in numbers are completely fine in Perl and normally just ignored. So any complains by Perl that a value which only consists of digits, a periods and underscores isn't numeric can be simply ignored.
In Perl underscores in numbers are used to make numbers easier to read, especially in version numbers the part after the underscore is often used as a revision or build number.
The problem is that any numbers with underscores once they are "stringified", won't be recognized as numbers anymore; Perl will then issue a warning if those are enabled. This is reproducable with the following commands:
As the last both commands show will Perl just ignore everything after the underscore, which can lead to unexpected results when comparing numbers. That's the bad news.
In the SpamAssassin codebase there aren't anywhere numbers used which contain an underscore – the warnings are produced by the $VERSION variable of external modules. And there's no place where the code checks for such an exact version that the ignored part of the fractions would have any impact. That's the good news.