From b5868da56c55ff0ce051b328f45470c8b0653ca4 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Wed, 18 Jul 2012 19:39:04 +0200 Subject: flewless `ponysay -l` --- ponysaylist.pl | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 ponysaylist.pl (limited to 'ponysaylist.pl') diff --git a/ponysaylist.pl b/ponysaylist.pl new file mode 100755 index 0000000..7a09376 --- /dev/null +++ b/ponysaylist.pl @@ -0,0 +1,67 @@ +#!/usr/bin/perl + +# ponysaylist +# Prints a list of ponies in columns +# +# Licensed under WTFPL +# See COPYING for details + +# Author: Mattias Andrée, maandree@kth.se + + +$first = 1; +$scrw = 1; +$maxw = 1; + +foreach $arg (@ARGV) +{ + if ($first == 1) + { $first = 0; + $scrw = $arg; + } + else + { $w = length $arg; + $maxw = $w if ($w > $maxw); + } +} + +$cols = int (($scrw + 2) / ($maxw + 2)); +$cols = 1 if ($cols < 1); + + +@list = (); + +$first = 1; +$items = 0; +foreach $arg (@ARGV) +{ + if ($first == 1) + { $first = 0; + } + else + { $ws = $maxw - (length $arg); + push @list, $arg.(" "x$ws); + $items += 1; + } +} + + +$rows = int (($items + $cols - 1) / $cols); +$i = 0; +@rowlist = (); + +while ($i < $items) +{ $row = 0; + while (($row < $rows) and ($i < $items)) + { + $rowlist[$row] .= " " unless ($i < $rows); + $rowlist[$row] .= $list[$i]; + $row += 1; + $i += 1; +} } + +foreach $row (@rowlist) +{ + print $row."\n"; +} + -- cgit