#!/usr/bin/perl -w
# written by Alexander Dahl <post@lespocky.de>
# $Id: binary.pl 108 2007-11-28 00:45:02Z alex $
# licensed under GPLv2
use strict;
use warnings;
use IO::File;

my @buffer;
my $char;
my $fh = new IO::File;
$fh->open("xkcd99_bin.txt") || die $1;
do {
    read($fh, $char, 1);
    if ($char =~ /[01]/) {
        push(@buffer, $char);
    }    
} while (!eof($fh));
$fh->close;

my $bytestoread = $#buffer+1-(($#buffer+1)%8);
my @bytebuffer = [0..7];
my $byte = 0;
my $finalstring = '';

for (my $i=0; $i < $bytestoread/8; $i++) {
    @bytebuffer = @buffer[8*$i..8*$i+7];
    for (my $j=0; $j<8; $j++) {
        if ($bytebuffer[$j] eq '1') {
            $byte = $byte | (128>>$j);
        }
        elsif ($bytebuffer[$j] eq '0') {
            $byte = $byte & ~(0x80>>$j);
        }
    }
    $finalstring = $finalstring . chr($byte);
}

print $finalstring . "\n";

exit 0;
