Hi Steven,
The following works.
#!/bin/perl
BEGIN {
eval {require Inline};
if ($@) {
$noC = 1;
}
else {
$noC = 0;
Inline->import('C');
}
}
add_C(5);
__END__
__C__
void add_C(int x) {
printf("-----------here!..x=%d\n",x);
}
-Ken
> -----Original Message-----
> From: Wu, Gang (Steven) [mailto:[EMAIL PROTECTED]
> Sent: Thursday, March 25, 2004 4:19 PM
> To: Williams, Ken; Eric Wilhelm
> Cc: [EMAIL PROTECTED]
> Subject: RE: How do I disable modules in a script
>
>
> Hi, Ken,
>
> Thanks for the quick reply. Actually, I want to avoid using "use,"
> because it will get caught if Perl couldn't find the Inline module and
> terminate my program. So Eric suggested using
> Inline::import(). My code
> is as follows (modified after reading your message), but it
> still can't
> find the C subroutine. Can you take a look? Thanks!
>
> Steven
>
> Here is the error message:
> Undefined subroutine &main::add_C called at testperl.pl line 19.
>
> My perl script:
>
> #!/bin/perl
>
> BEGIN {
> eval {require Inline::C};
> if ($@) {
> $noC = 1;
> }
> else {
> $noC = 0;
> Inline::import(Inline, C => join('', <END>));
> }
> }
>
> add_C(1);
>
> __END__
> __C__
>
> void add_C(int x) {
> printf("-----------here!..x=%d\n",x);
> }
>
> -----Original Message-----
> From: Williams, Ken [mailto:[EMAIL PROTECTED]
> Sent: Thursday, March 25, 2004 2:01 PM
> To: Wu, Gang (Steven); Eric Wilhelm
> Cc: [EMAIL PROTECTED]
> Subject: RE: How do I disable modules in a script
>
>
>
> > -----Original Message-----
> > From: Wu, Gang (Steven) [mailto:[EMAIL PROTECTED]
> >
> > Hi, Eric,
> >
> > Your method needs to have all the C code in the BEGIN block.
> > What if I
> > have a rather long C code and I want it to be at the end of
> > the file? Is there any way?
>
>
> How you construct the string that you pass to the 'use'
> statement is up
> to
> you. The following works if you put your C code in the __DATA__
> section:
>
> use Inline C => join('', <DATA>);
>
> -Ken
>