On Thu, 10 Jun 2010 09:17:23 +0200, Gerd Pokorra <g...@zimt.uni-siegen.de> wrote:

#!/usr/bin/perl6

Q:PIR {
    load_bytecode 'Digest/MD5.pbc'
    .local pmc md5sum, md5_sum_get
    md5sum = get_root_global ['parrot'; 'Digest'], '_md5sum'
    $P0 = md5sum('foo')
    md5_sum_get = get_root_global ['parrot'; 'Digest'], '_md5_hex'
    $S0 = md5_sum_get($P0)
    say $S0
}

Yay!! It works!
Here's my final (for now) version.
Feedback welcome.

I'm adding some test cases and putting this
up as perl6-digest-md5, possibly using ufo
if I get around to it.

#
# Digest::MD5 Perl6 module
#

class Digest::MD5 {

    multi method md5_hex (Str $message) {

        pir::load_bytecode('Digest/MD5.pbc');

        my $md5_sum = Q:PIR {
            load_bytecode 'Digest/MD5.pbc'
            .local pmc md5sum, md5_sum_get
            md5sum = get_root_global ['parrot'; 'Digest'], '_md5sum'
            $P0 = find_lex '$message'
            $P1 = md5sum($P0)
            md5_sum_get = get_root_global ['parrot'; 'Digest'], '_md5_hex'
            %r = md5_sum_get($P1)
        };

        return $md5_sum;
    }

    multi method md5_hex (@message) {
        my Str $message = @message.join('');
        return Digest::MD5.md5_hex($message);
    }

}

--
Cosimo

Reply via email to