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 -> intSV into an integer. Note that OCaml ints 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 -> svint into a Perl SV.val float_of_sv : sv -> floatSV into a float.val sv_of_float : float -> svfloat into a Perl SV.val string_of_sv : sv -> stringSV into a string.val sv_of_string : string -> svstring into a Perl SV.val bool_of_sv : sv -> boolSV into a boolean.val sv_of_bool : bool -> svSV.val sv_is_true : sv -> booltrue if the SV is "true" (in the Perl sense of truth).val sv_is_undef : sv -> booltrue if the SV is undefined (is undef).val sv_undef : unit -> svundef.val sv_true : unit -> svSV which is true.val sv_false : unit -> svSV which is false.val sv_yes : unit -> svPL_sv_yes. (There are some unresolved issues
with using this, so use Perl.sv_true instead).val sv_no : unit -> svPL_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_tSV. Somewhat equivalent to
calling Perl's ref function.val string_of_sv_t : sv_t -> stringsv_t (SV type).val scalarref : sv -> svSVs, this returns sv.val arrayref : av -> svSVs, this returns sv.val hashref : hv -> svSVs, this returns sv.val deref : sv -> svSV. If the input is not a reference to a scalar, throws
Invalid_argument.val deref_array : sv -> avAV. If the input is not a reference to an array, throws
Invalid_argument.val deref_hash : sv -> hvHV. If the input is not a reference to a hash, throws
Invalid_argument.val av_empty : unit -> avAV (array).val av_of_sv_list : sv list -> avSVs.val av_push : av -> sv -> unitSV to the end of the array. Same as Perl
push @av, $sv.val av_pop : av -> svSV at the end of the array and return it. Same as
Perl $sv = pop @av.val av_shift : av -> svSV at the beginning of the array and return it. Same as
Perl $sv = shift @av.val av_unshift : av -> sv -> unitSV to the start of the array. Same as Perl
unshift @av, $sv.val av_length : av -> intAV.val av_set : av -> int -> sv -> unitAV with SV.val av_get : av -> int -> svAV.val av_clear : av -> unitAV. Same as Perl @av = ().val av_undef : av -> unitAV (and all elements in it). Same as Perl undef @av.val av_extend : av -> int -> unitAV 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 listAV, return a list of the
results.val list_of_av : av -> sv listAV into a simple list of SVs.val av_of_string_list : string list -> avAV from a list of strings.val hv_empty : unit -> hvHV (hash).val hv_set : hv -> string -> sv -> unitSV in the named key in the hash.val hv_get : hv -> string -> svSV at the key in the hash. Throws Not_found if no key.val hv_exists : hv -> string -> boolexists.val hv_delete : hv -> string -> unitdelete.val hv_clear : hv -> unitHV. Same as Perl %av = ().val hv_undef : hv -> unitHV (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 -> sveval 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 -> svcall_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 listcall_method, but the method is called in an array context.val call_method_void : sv -> string -> sv list -> unitcall_method, but the method is called in a void context (results
are discarded).val call_class_method : string -> string -> sv list -> svcall_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 listcall_class_method, but the method is called in an array context.val call_class_method_void : string -> string -> sv list -> unitcall_class_method, but the method is called in a void context.