Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

clkao (1687)

clkao
  (email not shown publicly)

Journal of clkao (1687)

Monday April 17, 2006
05:00 PM

fun with microperl

[ #29353 ]

I got dragged into an art project for helping out firefighting messaging between some small mipsel devices running linux.

The distribution comes with microperl in its package system, however it wasn't built with select() by default, which makes it pretty much useless for writing network applications. So I was hoping to cross-compile standard perl and modules to mips, but it seemed really painful. I gave up and ended up just enabling HAS_SELECT for the cross-compiled microperl.

Now I have to use Socket.pm to actually do the networking bit. It turned out lots of crucial bits are written in xs, so I reimplemented them in pure perl. (Ya, I know it's bad to pack platform-dependent structure manually)

So I have a tiny application controlling a local led display and buttons IO device, as well as broadcasting and processing events over network, all in a few hours after I get the microperl and socket working!

Anyway, it's quite fun hacking and I am looking forward to the show itself!

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • That sounds like quite a project. Do let us know how it turns out, links to reviews, after-reports, etc.

    Using MicroPerl for embedded is a great idea. Microperl, not just for bootstrapping anymore.

    --
    Bill
    # I had a sig when sigs were cool
    use Sig;
  • Hello clkao, I am also interested in using Microperl with some networking functions. How did you port the functionalities from Socket.pm to Perl? Did you write them in C? from what I read in your post, you seem to have rewritten in Perl... When you write that it's not such a good thing to do it from perl because it's platform-dependent, does this refer to the CPU type or to the OS itself. My goal is to add some local UNIX socket functionality (sockaddr_un) inside Microperl to be able to accept incoming co
    • Hello,

      I finally could make it work by using the following code (that allows my code to be rather platform-independant, if I fill in properly the first bunch of variables):

      my $PF_UNIX=1;
      my $AF_UNIX=$PF_UNIX;
      my $SOCK_STREAM=2;   # 1 for ix86, 2 for MIPS
      my $SOMAXCONN=128;
      my $sun_path_SIZE=2;
      my $sun_family_SIZE=108;



      #my $uaddr = sockaddr_un($SOCKFILE);   # Create a UNIX socket (local)... not used because this requires Socket.pm... instead, we will pack the sockaddr_un