#!/usr/bin/perl

# Idiom #310 Fill array with random bytes

my $n = 20;

my $bytestring;
foreach my $i (0 .. $n*8 - 1) {
    vec($bytestring, $i, 1) = rand(2);
}

my $i = 0;
foreach my $c ( split //, $bytestring ) {
    my $bytes_in_binary = unpack 'B*', $c;
    printf "%4d  %s\n", ++$i, $bytes_in_binary;    
}

printf "Length of bytestring in bytes: %d\n", length $bytestring;
vec($bytestring, $n*8, 1) = 1;
printf "Length after extending by one bit: %d\n", length $bytestring;
printf "Binary value of last byte: %s\n", unpack 'b*', substr $bytestring, -1, 1;

