Forum: Ruby Calling perl function in ruby

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
9b3d14efbedc70a652b441b2ec6b871b?d=identicon&s=25 Loga Ganesan (loganathan1)
on 2009-02-24 09:55
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?
753dcb78b3a3651127665da4bed3c782?d=identicon&s=25 Brian Candler (candlerb)
on 2009-02-24 10:25
Loga Ganesan 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.
This topic is locked and can not be replied to.