Ivan Gromov wrote:
>
>  I have trouble with embedding Perl in C. I would like to replace some
> subroutine (exactly it is print function) in Perl script without
> changing this script.
> 
> #include <EXTERN.h>
> #include <perl.h>
> 
> static PerlInterpreter *my_perl; // Perl interpreter in my program
> 
> int main(int argc, char **argv)
> 
> {
> char* command_line[] = {"", “./script.pl”}; // script.pl is perl script
> my_perl = perl_alloc();
> perl_construct(my_perl);
> //maybe, in this place I should carry out some function to replace
> print?
> perl_parse(my_perl, NULL, 3, command_line, (char **)NULL);
> perl_run(my_perl);
> perl_destruct(my_perl);
> perl_free(my_perl);
> return 0;
> }
> 
> Is it possible? And how can I do it? Where can I find information about
> this subject?
> Or how I can replace any perl function?
> 
>  I was looking for any information dealing with my problem, but I
> haven’t found anything yet. Any help is much appreciated.

print() is one of the built-in functions that can't be overridden. You will have
to use a source filter or simply edit your Perl program. Take a look at

  perldoc perlfilter

for guidance on the former option.

By the way, you have an argument count of 3 in your call to perl_parse, but the
command_line array has only two elements. It shouldn't cause any problems, it's
just wrong :)

Rob

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to