Re: \n cause error.
[email protected] ("Sisyphus")
| Newsgroups | perl.inline |
|---|---|
| Message-ID | <0A6C65625B6A43C99AC62F9AD68E9105@desktop2> |
----- Original Message ----- From: "Xiao Yafeng" <[email protected]> To: "inline" <[email protected]>; "Sisyphus" <[email protected]> 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