=over 5
-=item B<perl_call_sv>
+=item perl_call_sv
I<perl_call_sv> takes two parameters, the first, C<sv>, is an SV*.
This allows you to specify the Perl subroutine to be called either as a
subroutine. The section, I<Using perl_call_sv>, shows how you can make
use of I<perl_call_sv>.
-=item B<perl_call_pv>
+=item perl_call_pv
The function, I<perl_call_pv>, is similar to I<perl_call_sv> except it
expects its first parameter to be a C char* which identifies the Perl
subroutine you want to call is in another package, just include the
package name in the string, e.g., C<"pkg::fred">.
-=item B<perl_call_method>
+=item perl_call_method
The function I<perl_call_method> is used to call a method from a Perl
class. The parameter C<methname> corresponds to the name of the method
static and virtual methods and L<Using perl_call_method> for an example
of using I<perl_call_method>.
-=item B<perl_call_argv>
+=item perl_call_argv
I<perl_call_argv> calls the Perl subroutine specified by the C string
stored in the C<subname> parameter. It also takes the usual C<flags>
It is possible for the Perl subroutine you are calling to terminate
abnormally, e.g., by calling I<die> explicitly or by not actually
-existing. By default, when either of these of events occurs, the
-process will terminate immediately. If though, you want to trap this
+existing. By default, when either of these events occurs, the
+process will terminate immediately. If you want to trap this
type of event, specify the G_EVAL flag. It will put an I<eval { }>
around the subroutine call.
/* Check the eval first */
if (SvTRUE(ERRSV))
{
- printf ("Uh oh - %s\n", SvPV(ERRSV, PL_na)) ;
+ STRLEN n_a;
+ printf ("Uh oh - %s\n", SvPV(ERRSV, n_a)) ;
POPs ;
}
else
if (SvTRUE(ERRSV))
{
- printf ("Uh oh - %s\n", SvPV(ERRSV, PL_na)) ;
+ STRLEN n_a;
+ printf ("Uh oh - %s\n", SvPV(ERRSV, n_a)) ;
POPs ;
}
=head2 Creating and calling an anonymous subroutine in C
As we've already shown, C<perl_call_sv> can be used to invoke an
-anonymous subroutine. However, our example showed how Perl script
-invoking an XSUB to preform this operation. Let's see how it can be
+anonymous subroutine. However, our example showed a Perl script
+invoking an XSUB to perform this operation. Let's see how it can be
done inside our C code:
...