----- Original Message ----- From: "Xiao Yafeng" <xyf.x...@gmail.com>
To: "inline" <inline@perl.org>; "Sisyphus" <sisyph...@optusnet.com.au>
Sent: Friday, July 13, 2012 11:00 PM
Subject: \n cause error.


Hi all,

I've found a bug(maybe) in Inline C while dig wchar_t. see
http://www.perlmonks.org/?node_id=981427

I made a small inline c snippet as rob's suggestion, but throw an error:
....
l\lib\CORE"   test_list_pl_f553.c
test_list_pl_f553.xs: In function `GetProcessList':
test_list_pl_f553.xs:29: error: missing terminating " character
test_list_pl_f553.xs:30: error: missing terminating " character
test_list_pl_f553.xs:35: error: syntax error before '}' token
dmake.exe:  Error code 129, while making 'test_list_pl_f553.o'


I've found this error is because inline can't treat \n in printf statement
correctly, In xs file,
printf("blah blah blah %s \n", sz) will be translated into

printf("blah blah blah %s
", sz)                           #two lines!!


a bug?

Funnily enough, I struck the same thing when playing around with another Inline::C script today. It happens when you use double quotes instead of single quotes with the heredoc operator. (Is "heredoc operator" the right term ?)

Instead of :

use Inline C => <<"EOC"

you want:

use Inline C => <<'EOC'

The behaviour you observed seems to be standard perl behaviour, so I don't think it's a bug:

############################
C:\_32\pscrpt>type try.pl

use warnings;

print <<"EOC";
p"\n"
EOC

print <<'EOC';
p"\n"
EOC

C:\_32\pscrpt>perl try.pl
p"
"
p"\n"

C:\_32\pscrpt>
############################

Cheers,
Rob

Reply via email to