http://www.perlmonks.org?node_id=11104951

syphilis has asked for the wisdom of the Perl Monks concerning the following question:

Hi,
In making some edits to the file mentioned in the subject line, I stumbled upon something that kept me occupied for way longer than I care to admit.
I believe that it will prove to be readily reproducible, but I'd be delighted if that turns out to *not* be the case.
Please feel free to test this.

In this ListUtil.xs you will find the following:
Line 1193: sv_setpvf(keysv, "%.15" NVgf, SvNV(arg)); Line 1194:#ifdef HV_FETCH_EMPTY_HE
I find that the code becomes uncompilable if I insert an empty line between those 2 lines:
Line 1193: sv_setpvf(keysv, "%.15" NVgf, SvNV(arg)); Line 1194: Line 1195:#ifdef HV_FETCH_EMPTY_HE
On both Ubuntu and MS Windows (perl-5.30.0 and others) that modification quickly produces the following error (during the 'make' stage of the build):
Code is not inside a function (maybe last function was ended by a blan +k line followed by a statement on column one?) in ListUtil.xs, line 1 +195 Makefile:360: recipe for target 'ListUtil.c' failed
Can someone explain that behaviour to me ?
Are XS files typically that sensitive to white space ? (I've struck nothing like it before.)

Cheers
Rob