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
> 

Reply via email to