Sisyphus
Sun, 05 Apr 2009 03:21:25 -0700
----- Original Message ----- From: "Ron Grunwald" <ron...@yahoo.com.au>
An interesting and unexpected behaviour about Inline emerged here. Inline does not process multiple "use Inline BC ..." statements in the order in which they appearin the code.
I haven't gone digging into the source to find out why this might be - and I don't think I want to :-)
It sounds as though the separate statements could be being fed into a hash prior to processing. (The hashing mechanism plays havoc with our notion of order, as you probably know.)
I couldn't reproduce the behaviour with Inline::C (see demo below my sig), except that the "use Inline C => 'DATA';" is always processed last. This might be associated with the fact that the __DATA__ section always comes at the very end of the script.
I find that the "use Inline C => <<'EOC';" sections are being compiled in the order in which they occur in the script.
Cheers,
Rob
use warnings;
use Inline C => Config =>
PRINT_INFO => 1;
use Inline C => <<'EOC';
void foo() {
printf("hello from foo\n");
}
EOC
use Inline C => <<'EOC';
void bar() {
printf("hello from bar\n");
}
EOC
use Inline C => <<'EOC';
void baz() {
printf("hello from baz\n");
}
EOC
use Inline C => 'DATA';
use Inline C => <<'EOC';
void fubar() {
printf("hello from fubar\n");
}
EOC
use Inline C => <<'EOC';
void fubarbaz() {
printf("hello from fubarbaz\n");
}
EOC
foo();
bar();
baz();
rhubarb();
fubar();
fubarbaz();
__DATA__
__C__
void rhubarb() {
printf("hello from rhubarb\n");
}