module Perl:Interface to Perl from OCaml.sig
..end
Copyright (C) 2003 Merjis Ltd.
$Id: perl.mli,v 1.12 2004/03/03 12:39:20 rich Exp $
type
sv
type
av
type
hv
exception Perl_failure of string
die
in Perl code is translated automatically into this exception.val int_of_sv : sv -> int
SV
into an integer. Note that OCaml int
s aren't
large enough to store the full 32 (or 64) bits from a Perl integer,
so you may get a silent overflow.val sv_of_int : int -> sv
int
into a Perl SV
.val float_of_sv : sv -> float
SV
into a float.val sv_of_float : float -> sv
float
into a Perl SV
.val string_of_sv : sv -> string
SV
into a string.val sv_of_string : string -> sv
string
into a Perl SV
.val bool_of_sv : sv -> bool
SV
into a boolean.val sv_of_bool : bool -> sv
SV
.val sv_is_true : sv -> bool
true
if the SV
is "true" (in the Perl sense of truth).val sv_is_undef : sv -> bool
true
if the SV
is undefined (is undef
).val sv_undef : unit -> sv
undef
.val sv_true : unit -> sv
SV
which is true.val sv_false : unit -> sv
SV
which is false.val sv_yes : unit -> sv
PL_sv_yes
. (There are some unresolved issues
with using this, so use Perl.sv_true
instead).val sv_no : unit -> sv
PL_sv_no
. (There are some unresolved issues
with using this, so use Perl.sv_false
instead).type
sv_t =
| |
SVt_NULL |
|||
| |
SVt_IV |
(* | Integer scalar. | *) |
| |
SVt_NV |
(* | Floating point scalar. | *) |
| |
SVt_PV |
(* | String scalar. | *) |
| |
SVt_RV |
(* | Reference. | *) |
| |
SVt_PVAV |
(* | Array ref. | *) |
| |
SVt_PVHV |
(* | Hash ref. | *) |
| |
SVt_PVCV |
(* | Code ref. | *) |
| |
SVt_PVGV |
(* | Glob. | *) |
| |
SVt_PVMG |
(* | Blessed or magical scalar. | *) |
val sv_type : sv -> sv_t
SV
. Somewhat equivalent to
calling Perl's ref
function.val string_of_sv_t : sv_t -> string
sv_t
(SV
type).val scalarref : sv -> sv
SV
s, this returns sv
.val arrayref : av -> sv
SV
s, this returns sv
.val hashref : hv -> sv
SV
s, this returns sv
.val deref : sv -> sv
SV
. If the input is not a reference to a scalar, throws
Invalid_argument
.val deref_array : sv -> av
AV
. If the input is not a reference to an array, throws
Invalid_argument
.val deref_hash : sv -> hv
HV
. If the input is not a reference to a hash, throws
Invalid_argument
.val av_empty : unit -> av
AV
(array).val av_of_sv_list : sv list -> av
SVs
.val av_push : av -> sv -> unit
SV
to the end of the array. Same as Perl
push @av, $sv
.val av_pop : av -> sv
SV
at the end of the array and return it. Same as
Perl $sv = pop @av
.val av_shift : av -> sv
SV
at the beginning of the array and return it. Same as
Perl $sv = shift @av
.val av_unshift : av -> sv -> unit
SV
to the start of the array. Same as Perl
unshift @av, $sv
.val av_length : av -> int
AV
.val av_set : av -> int -> sv -> unit
AV
with SV
.val av_get : av -> int -> sv
AV
.val av_clear : av -> unit
AV
. Same as Perl @av = ()
.val av_undef : av -> unit
AV
(and all elements in it). Same as Perl undef @av
.val av_extend : av -> int -> unit
AV
so it contains at least n+1
elements. Note that
this apparently just changes the amount of allocated storage. The
extra elements are not visible until you store something in them.val av_map : (sv -> 'a) -> av -> 'a list
AV
, return a list of the
results.val list_of_av : av -> sv list
AV
into a simple list of SV
s.val av_of_string_list : string list -> av
AV
from a list of strings.val hv_empty : unit -> hv
HV
(hash).val hv_set : hv -> string -> sv -> unit
SV
in the named key in the hash.val hv_get : hv -> string -> sv
SV
at the key in the hash. Throws Not_found
if no key.val hv_exists : hv -> string -> bool
exists
.val hv_delete : hv -> string -> unit
delete
.val hv_clear : hv -> unit
HV
. Same as Perl %av = ()
.val hv_undef : hv -> unit
HV
(and all elements in it). Same as Perl undef %hv
.val get_sv : ?create:bool -> string -> sv
$a
in Perl, then get_sv "a"
will return its value.
If the symbol does not exist, this throws Not_found
.
If the optional ?create
argument is set to true and the symbol does
not exist, then Perl will create the symbol (with value undef
) and
this function will return the SV
for undef
.
val get_av : ?create:bool -> string -> av
val get_hv : ?create:bool -> string -> hv
val call : ?sv:sv -> ?fn:string -> sv list -> sv
?fn
parameter) or by calling a string/CODEREF (using the ?sv
parameter).
Returns the Perl SV
containing the result value. (See
Perl.int_of_sv
etc.).
If the Perl code calls die
then this will throw Perl_failure
.
val call_array : ?sv:sv -> ?fn:string -> sv list -> sv list
?fn
parameter) or by calling a string/CODEREF (using the ?sv
parameter).
Returns the list of results.
If the Perl code calls die
then this will throw Perl_failure
.
val call_void : ?sv:sv -> ?fn:string -> sv list -> unit
?fn
parameter) or by calling a string/CODEREF (using the ?sv
parameter).
Any results are discarded.
If the Perl code calls die
then this will throw Perl_failure
.
val eval : string -> sv
eval
command. It evaluates a piece of
Perl code (in scalar context) and returns the result (a Perl SV
).val call_method : sv -> string -> sv list -> sv
call_method obj name [parameters]
calls the method name
on the Perl
object obj
with the given parameters, in a scalar context. Thus this
is equivalent to $obj->name (parameters)
.
Returns the Perl SV
containing the result value.
If the method calls die
then this will throw Perl_failure
.
val call_method_array : sv -> string -> sv list -> sv list
call_method
, but the method is called in an array context.val call_method_void : sv -> string -> sv list -> unit
call_method
, but the method is called in a void context (results
are discarded).val call_class_method : string -> string -> sv list -> sv
call_class_method classname name [parameters]
calls the static method
name
in the Perl class classname
with the given parameters, in a
scalar context. Thus this is equivalent to $classname->name (parameters)
.
Returns the Perl SV
containing the result value.
If the static method calls die
then this will throw Perl_failure
.
val call_class_method_array : string -> string -> sv list -> sv list
call_class_method
, but the method is called in an array context.val call_class_method_void : string -> string -> sv list -> unit
call_class_method
, but the method is called in a void context.