Data::Table::Text - Write data in tabular text format
use Data::Table::Text; say STDERR formatTable([ [".", "aa", "bb", "cc"], [1, "A", "B", "C"], [2, "AA", "BB", "CC"], [3, "AAA", "BBB", "CCC"], [4, 1, 22, 333]]); # . aa bb cc # 1 1 A B C # 2 2 AA BB CC # 3 3 AAA BBB CCC # 4 4 1 22 333 say STDERR formatTable([ { aa => "A", bb => "B", cc => "C" }, { aa => "AA", bb => "BB", cc => "CC" }, { aa => "AAA", bb => "BBB", cc => "CCC" }, { aa => 1, bb => 22, cc => 333 }]); # aa bb cc # 1 A B C # 2 AA BB CC # 3 AAA BBB CCC # 4 1 22 333 say STDERR formatTable({ "" => ["aa", "bb", "cc"], "1" => ["A", "B", "C"], "22" => ["AA", "BB", "CC"], "333" => ["AAA", "BBB", "CCC"], "4444" => [1, 22, 333]}); # aa bb cc # 1 A B C # 22 AA BB CC # 333 AAA BBB CCC # 4444 1 22 333 say STDERR formatTable({ a => { aa => "A", bb => "B", cc => "C" }, aa => { aa => "AA", bb => "BB", cc => "CC" }, aaa => { aa => "AAA", bb => "BBB", cc => "CCC" }, aaaa => { aa => 1, bb => 22, cc => 333 }}); # aa bb cc # a A B C # aa AA BB CC # aaa AAA BBB CCC # aaaa 1 22 333 say STDERR formatTable(["a", "bb", "ccc", 4444]); # 0 a # 1 bb # 2 ccc # 3 4444 say STDERR formatTable({ aa => "A", bb => "B", cc => "C" }); # aa A # bb B # cc C
Date and timestamps as used in logs of long running commands
Year-monthNumber-day at hours:minute:seconds
Year-monthName-day
hours:minute:seconds
Execute a command checking and logging the results
1 @cmd Command to execute specified as one or more strings with optionally the last string being a regular expression that is used to confirm that the command executed successfully and thus that it is safe to suppress the command output as uninteresting.
Operations on files and paths
Information about each file
Get the size of a file
1 $file File name
Get the modified time of a file in seconds since the epoch
Returns undef if all the files exist and the first file is younger than all the following files; else returns the first file that does not exist or is younger than the first file.
1 $target Target 2 @sources Sources
Example:
make($target) if fileOutOfDate($target, $source1, $source2, $source3)
Use fileOutOfDateX() to execute fileOutOfDate and die 'fileOutOfDate' instead of returning undef
Create file names from file name components
Create a file path from an array of file name components. If all the components are blank then a blank file name is returned
1 @file File components
Directory from an array of file name components. If all the components are blank then a blank file name is returned
File name from file name components and extension
1 @File File components and extension
Quote a file name
Get the current working directory
The path to the folder above the current working folder
Parse a file name into (path, name, extension)
1 $file File name to parse
Path to the folder that contains this file, or use "parseFileName"
Find files and folders below a folder
Find all the file under a folder
1 $dir Folder to start the search with
Find all the folders under a folder
File list
1 $pattern Search pattern
Search the specified directory trees for files that match the specified extensions - the argument list should include at least one folder and one extension to be useful
1 @foldersandExtensions Mixture of folder names and extensions
Read and write strings from and to files creating paths as needed
Read a file containing unicode
1 $file Name of unicode file to read
Read binary file - a file whose contents are not to be interpreted as unicode
1 $file File to read
Make a path for a file name or a folder
1 $path Path
Write a unicode string to a file after creating a path to the file if necessary
1 $file File to write to 2 $string Unicode string to write
Append a unicode string to a file after creating a path to the file if necessary
1 $file File to append to 2 $string Unicode string to append
Write a non unicode string to a file in after creating a path to the file if necessary
1 $file File to write to 2 $string Non unicode string to write
Image operations
Return (width, height) of an image obtained via imagemagick
1 $image File containing image
Convert an image to jpx format
1 $source Source file 2 $target Target folder (as multiple files will be created) 3 $size Size of each tile
Integer powers of two
Test whether a number is a power of two, return the power if it is else undef
1 $n Number to check
Use powerOfTwoX() to execute powerOfTwo and die 'powerOfTwo' instead of returning undef
Find log two of the lowest power of two greater than or equal to a number
Use containingPowerOfTwoX() to execute containingPowerOfTwo and die 'containingPowerOfTwo' instead of returning undef
Format data structures as tables
Tabularize text - basic version
1 $data Data to be formatted 2 $separator Optional line separator
Format various data structures
1 $data Data to be formatted 2 $title Optional title 3 $separator Optional line separator
Count keys down to the specified level
1 $maxDepth Maximum depth to count to 2 $ref Reference to an array or a hash
Load data structures from lines
Load an array from lines of text in a string
1 $string The string of lines from which to create an array
Load a hash: first word of each line is the key and the rest is the value
1 $string The string of lines from which to create a hash
Load an array of arrays from lines of text: each line is an array of words
1 $string The string of lines from which to create an array of arrays
Load a hash of arrays from lines of text: the first word of each line is the key, the remaining words are the array contents
1 $string The string of lines from which to create a hash of arrays
Check the keys in a hash
1 $test The hash to test 2 $permitted The permitted keys and their meanings
Replace $a->{value} = $b with $a->value = $b which reduces the amount of typing required, is easier to read and provides a hard check that {value} is spelt correctly.
Generate LVALUE scalar methods in the current package, A method whose value has not yet been set will return a new scalar with value undef.
1 @names List of method names
$a->value = 1;
Generate LVALUE scalar methods with default values in the current package. A reference to a method whose value has not yet been set will return a scalar whose value is the name of the method.
$a->value == qq(value);
Generate LVALUE array methods in the current package. A reference to a method that has no yet been set will return a reference to an empty array.
$a->value->[1] = 2;
Generate LVALUE hash methods in the current package. A reference to a method that has no yet been set will return a reference to an empty hash.
1 @names Method names
$a->value->{a} = 'b';
Actions on strings
Indent lines contained in a string or formatted table by the specified amount
1 $string The string of lines to indent 2 $indent The indenting string
Test whether a string is blank
1 $string String
Trim off white space from from front and end of string
Pad a string with blanks to a multiple of a specified length
1 $string String 2 $length Tab width
Normalize white space in a string to make comparisons easier
1 $string String to normalize
Extract the package name from a java file
1 $javaFile Java file
Extract, format and update documentation for a perl module
Extract documentation from a perl script between the lines marked with:
#n title # description
and:
#...
where n is a digit 1-9 indicating the heading level and the # is in column 1.
Methods are formatted as:
sub name(signature) #XP comment describing method {my ($parameters) = @_; # comments for each parameter separated by commas.
X is optional and indicates that a method whose name ends in X should be generated which dies rather than returning undef.
P is optional and indicates a private method.
Search for '#1': in https://metacpan.org/source/PRBRENAN/Data-Table-Text-20170728/lib/Data/Table/Text.pm to see examples.
Parameters:
1 $perlModule Optional file name with caller's file being the default
Update the documentation in a perl file and show said documentation in a web browser
1 $perlModule File containing the code of the perl module
appendFile
checkKeys
containingFolder
containingPowerOfTwo
containingPowerOfTwoX
convertImageToJpx
currentDirectory
currentDirectoryAbove
dateStamp
dateTimeStamp
extractDocumentation
fileList
fileModTime
fileOutOfDate
fileOutOfDateX
filePath
filePathDir
filePathExt
fileSize
findDirs
findFiles
formatTable
formatTableBasic
genLValueArrayMethods
genLValueHashMethods
genLValueScalarMethods
genLValueScalarMethodsWithDefaultValues
imageSize
indentString
isBlank
javaPackage
keyCount
loadArrayArrayFromLines
loadArrayFromLines
loadHashArrayFromLines
loadHashFromLines
makePath
nws
pad
parseFileName
powerOfTwo
powerOfTwoX
quoteFile
readBinaryFile
readFile
searchDirectoryTreesForMatchingFiles
timeStamp
trim
updatePerlModuleDocumentation
writeBinaryFile
writeFile
xxx
This module is written in 100% Pure Perl and is thus easy to read, use, modify and install.
Standard Module::Build process for building and installing modules:
perl Build.PL ./Build ./Build test ./Build install
philiprbrenan@gmail.com
http://www.appaapps.com
Copyright (c) 2016-2017 Philip R Brenan.
This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.
To install Data::Table::Text, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Data::Table::Text
CPAN shell
perl -MCPAN -e shell install Data::Table::Text
For more information on module installation, please visit the detailed CPAN module installation guide.