NAME¶
print_cols, format_cols - Print or format array elements in vertically sorted
columns.
SYNOPSIS¶
"use Array::PrintCols;"
"print_cols \@
array;"
"print_cols \@
array, $
colspec;"
"print_cols \@
array, $
colspec, $
total_width;"
"print_cols \@
array, $
colspec, $
total_width,
$
indent;"
$
output = "format_cols" <same arguments as
"print_cols">;
"$Array::PrintCols::PreSorted = 0;"
DESCRIPTION¶
This module exports two subroutine names: "print_cols" and
"format_cols".
The "print_cols" subroutine prints the items of "@
array" in multiple, alphabetically sorted vertical columns. One,
two, or three optional arguments may be given to "print_cols" to
control the width and number of the columns, the total width of the output,
and indentation. Reasonable defaults apply in the absence of the optional
arguments (or when given as the empty string or zero). Generally, the minimum
width column is used when possible.
If "$
colspec" is given as a non-negative number, it is treated
as the minimum width of the column; the actual width will be the maximum of
this value and the lengths of all array items.
If "$
colspec" is given as a negative number, its absolute
value value is used to determine the total number of columns. However, it
cannot exceed the total number of columns possible based on the maximum length
of all the array elements.
If a third argument is supplied, it is used as the total width of the output.
The default for this value is the value of the environment variable
$ENV{'COLUMNS'}, if defined, or 80.
If the fourth argument is given, it is used as the indent for all lines printed,
which subtracts from the total width of the output. This value defaults to
zero (ie: no indention of the output).
The variable $Array::PrintCols::PreSorted controls whether or not the
"print_cols" subroutine will expect its array argument to already be
sorted. If this variable is nil or zero, "print_cols" will cause
print out a sorted
copy of the input array.
The routine "format_cols" is called exactly like
"print_cols" but returns the formatted result as a string, rather
than printing it.
EXAMPLES¶
use Array::PrintCols;
@commands = sort qw( use list put get set quit help server );
# print in three columns with an indention of 1.
print_cols \@commands, -3, 0, 1;
# print the formatted result data to the result file
print RESULTFILE format_cols \@result_data;
AUTHOR¶
Copyright (C) 1995-1998 Alan K. Stebbens <aks@sgi.com>
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., 675 Mass
Ave, Cambridge, MA 02139, USA.
BUGS¶
With Perl, you cannot default intervening arguments by leaving them empty; you
must supply a zero or empty-string ('').