home *** CD-ROM | disk | FTP | other *** search
- #!/usr/local/bin/perl
-
- sub eol { ($elt+1) % $cols == 0; } # is this the last elt on line?
-
- $maxlen = 1; # widest string yet seen
-
- $winsize = "\0" x 8;
- $TIOCGWINSZ = 0x40087468; # should be require sys/ioctl.pl
-
- if (ioctl(STDOUT, $TIOCGWINSZ, $winsize)) {
- ($rows, $cols, $xpixel, $ypixel) = unpack('S4', $winsize);
- } else {
- $cols = 80;
- }
-
-
- while (<>) { # read stdin into $_
- s/\s+$//;
- $maxlen = $mylen if (($mylen = length($_)) > $maxlen);
- push(list, $_);
- }
-
- $maxlen += 1; # spaces
-
- $cols = int($cols / $maxlen);
- $rows = int(($#list+$cols) / $cols);
- $mask = sprintf("%%-%ds ", $maxlen);
-
- for ($elt = 0; $elt < $rows * $cols; $elt++) {
- $target = ($elt%$cols) * $rows + int(($elt/$cols));
- $piece = sprintf($mask, $target < ($#list+1) ? $list[$target] : "");
- $piece =~ s/\s+$// if do eol(); # don't blank pad to eol of line
- print $piece;
- print "\n" if do eol();
- }
-
- print "\n" if do eol();
-
-