Calling perl function in ruby


#1

Below code is used for calling c function in ruby.

#! /usr/bin/ruby

require ‘/usr/lib/ruby/1.8/inline.rb’

puts “Inline module…”
class MyTest
inline do |builder|
builder.c "
long factorial(int max) {
int i=max, result=1;
while (i >= 2) { result *= i–; }
return result;
}"
end
end
t = MyTest.new()
fact = t.factorial(5)
puts fact

Question:

Likewise, instead of c I have to write a perl function and should call
it?

Is there any way?


#2

Loga G. wrote:

Likewise, instead of c I have to write a perl function and should call
it?

Is there any way?

Only by embedding a whole Perl interpreter inside your Ruby interpreter.

Usually it’s better to make the Perl code a completely separate process,
and use some form of IPC to talk to it. Simplest to set up are probably
HTTP, or XMLRPC over HTTP.

It depends on your problem domain. Maybe starting a Perl process using
IO.popen(…) and talking to it over (its) stdin/stdout will be easier.
If the data is binary, then a simple binary protocol like (4 bytes
length) followed by (N bytes of data) will be much faster than wrapping
the request in XML and HTTP.