lol, another perl pitfall! On Fri, Jul 13, 2012 at 10:08 PM, Sisyphus <sisyph...@optusnet.com.au>wrote:
> > ----- 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<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 >