The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;

use GRID::Machine;
use Sys::Hostname;

for my $host qw( orion beowulf ) {

    my $machine = GRID::Machine->new(
        host => $host,
        remotelibs => [ qw( testrem ) ],
        uses => [ 'Sys::Hostname' ]
    );

    # register remote procedure
    my $r = $machine->sub( remote => q{
        print 'remote proc host: ' . &hostname . "\n";
        Alpha::Beta::Gamma::Test()
    } );
    die $r->errmsg unless $r->ok;

    # make remote call
    $r = $machine->remote();

    die $r->errmsg unless $r->ok;
    die $r->errmsg if $r->errmsg; # workaround!

    if (my $out = $r->stdout) {
        $out =~ s/^/[$host]-out-> /mg;
        print $out
    }

    if (my $err = $r->stderr) {
        $err =~ s/^/[$host]-err-> /mg;
        print $err
    }

    for my $ret ($r->Results) {
        print "ret> $ret\n";
    }

}