#!/usr/bin/perl -w use strict; use Data::Dumper; use POSIX; $_=; chomp or die; our @names = split /\t/, $_; our %count; foreach my $nspots (qw(1 2 3 4)) { $_=; chomp or die; my @l = split /\t/, $_; foreach my $i (0..$#names) { $count{$names[$i]}{$nspots} = $l[$i] || 0; } } $_ = Dumper(\%count); s{^}{// }mg; our $name; our $total_count; our $max_nrows=0; our $max_rowsz=0; sub wrtoplevel () { print "module $name(){ ////toplevel\n"; my $cs = $count{$name}; my $total = 0; $total += $_ foreach values %$cs; my $rowsz = ceil(sqrt($total)); my $nrows = ceil($total / $rowsz); $total_count += $total; $max_nrows = $nrows if $nrows > $max_nrows; $max_rowsz = $rowsz if $rowsz > $max_rowsz; my $ix = 0; print "// total=$total, rowsz=$rowsz, nrows=$nrows\n"; foreach my $nspots (sort keys %$cs) { my $c = $cs->{$nspots}; print <error and die $!; __DATA__ White Green Blue Red Yellow Purple Black Orange 20 15 14 12 13 15 18 20 8 10 10 8 6 4 13 10 10 10