General examples from Inline::SLang
The following code and examples can be found in the Inline::SLang distribution available from CPAN. The output was created using version 1.00 of the module, using the PDL support, together with version 1.4.9 of the S-Lang library.
Order of evaluation
# # Use this via 'perl -Mblib examples/order.pl' # use Inline 'SLang' => 'message("This is S-Lang");'; print "This is Perl\n";
which, when run, produces
This is S-Lang This is Perl
Trapping errors
# # $Id: trap_errors.pl,v 1.1 2005/01/04 16:18:07 dburke Exp $ # # Evaluate a S-Lang statement which contains an error # use strict; use Inline 'SLang'; # Call the S-Lang function # my $ans; eval { $ans = mydiv (0.0); }; print "The S-Lang error was:\n$@\n"; # Evaluate S-:ang code directly # eval { Inline::SLang::sl_eval( "10.0/0.0;" ); }; print "The S-Lang error was:\n$@\n"; __END__ __SLang__ define mydiv(y) { return 10.0 / y; }
which, when run, produces
The S-Lang error was: S-Lang Error: Divide by zero: Error while executing mydiv The S-Lang error was: S-Lang Error: Divide by zero: called from line 1, file: ***string***
What types are available?
The INFO option of the Inline module can be used to find out what S-Lang functions and datatypes are recognised by the module. The following example:
# # Use this via 'perl -Mblib -MInline=info example/info.pl' # use Inline SLang; # let's not actually do anything __END__ __SLang__ typedef struct { foo, bar } FooBarStruct_Type; variable foobar = "a string"; define foo() { return foobar; } define bar(x) { foobar = x; }
produces the following output when the '-MInline=info' option is added to the Perl interpreter:
<-----------------------Information Section-----------------------------------> Information about the processing of your Inline SLang code: Your source code needs to be compiled. I'll use this build directory: /data/dburke2/www/perl-slang/examples/_Inline/build/info_pl_9cef and I'll install the executable as: /data/dburke2/www/perl-slang/examples/_Inline/lib/auto/info_pl_9cef/info_pl_9cef.sldat Configuration details --------------------- Version of S-Lang: 1.4.9 Perl module version is 1.00 and supports PDL The following S-Lang types are recognised: Int32_Type UInteger_Type _IntegerP_Type FooBarStruct_Type[Struct_Type] Int_Type Struct_Type ULong_Type FD_Type Long_Type Float_Type Array_Type UInt32_Type File_Type UInt_Type UChar_Type UShort_Type Double_Type Float64_Type Int16_Type Float32_Type Null_Type Integer_Type BString_Type Char_Type Undefined_Type Short_Type Any_Type Assoc_Type Ref_Type Complex_Type String_Type UInt16_Type DataType_Type The following S-Lang namespaces have been bound to Perl: 2 functions from namespace Global are bound to package main bar() foo() <-----------------------End of Information Section---------------------------->