The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Algorithm::Networksort qw(nw_sort);

#
# Test using all binary combinations.  (Skipping the all-zeros
# and all-ones cases, which are already pretty well sorted).
#
sub zero_one
{
	my $inputs = shift;
	my $network_ref = shift;
	my $zo = qr/^0+1+$/;

	foreach my $x (1 .. (1 << $inputs) - 2)
	{
		my @bitlist = (split(//, unpack("B32", pack("N", $x))))[32 - $inputs .. 31];
		my $x_binary = join "", @bitlist;

		next if ($x_binary =~ $zo);	# An already-sorted sequence.

		nw_sort($network_ref, \@bitlist);

		$sort_string = join "", @bitlist;

		return "'$x_binary' ($x) sorted to '$sort_string'." unless ($sort_string =~ $zo);
	}

	return "pass";
}

1;