#!/usr/bin/perl 
use Penguin;
use Penguin::Rights;
use Penguin::Frame::Code;
use Penguin::Frame::Data;
use Penguin::Wrapper::PGP;
use Penguin::Wrapper::Transparent;
use Penguin::Compartment;

my $filename = shift;
my $password = shift; # bad idea, of course

open(PENGUINFILE, "<$filename");
{local $/ = undef; $penguinframe = <PENGUINFILE>}
close(PENGUINFILE);

print("penguinframe is $penguinframe\n");
$frame = new Penguin::Frame::Code Text => $penguinframe;

($title, $signer, $wrapmethod, $code) = $frame->disassemble(
                                             Password => $password);

$rightsdb = new Penguin::Rights;

get $rightsdb;

$userrights = getrights $rightsdb User => $signer;

print<<"ENDOFFORM";
Title: $title
Signer: $signer
Rights: $userrights
Wrap Method: $wrapmethod
Code
--------------
$code
--------------
ENDOFFORM

$compartment = new Penguin::Compartment;
$compartment->initialize( Operations => $userrights );

$result = $compartment->execute( Code => $code );

if ($@) { # illegal code tried to execute
    $result = $@;
}

print "-------result was--------\n$result\n";


syntax highlighted by Code2HTML, v. 0.9.1