Perl

Perl class names have been stripped of the C package name. So, GGslVector becomes oscats::GslVector and OscatsTest becomes oscats::Test. Perl method names have been stripped of the package and class name. So, g_gsl_vector_get(obj, i) becomes $obj->get($i) and oscats_test_administer(tst, ex) becomes $tst->administer($ex). Functions that are not object methods have been placed in Perl modules corresponding to ther C package names, so oscats_rnd_normal(1) becomes oscats::Random::normal(1).

Objects are created with the usual Perl semantics. Classes with an explicit construction method, oscats_*_new(...), can be created with positional arguments; otherwise, construction properties are supplied as name-value pairs. For example,

$v = new oscats::GslVector(10);
$model = new oscats::ContModelL1p();
$test = new oscats::Test("id" => $name, "itembank" => $bank);

Since Perl has automatic garbage collection, it isn't necessary to free objects explicitly.