Calling perl function in ruby

L

Loga Ganesan

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?
 
B

Brian Candler

Loga said:
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.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,153
Members
46,699
Latest member
AnneRosen

Latest Threads

Top