in reply to Text::Table w/ newlines

Use Algorithm::Loops:

#!/usr/bin/perl -w use strict; require Text::Table; use Algorithm::Loops qw( MapCarU ); my $t = Text::Table->new( qw( ID Name Source Type Assigment ) ); my @rows= ( [ 1, '...', '...', '...', '...' ], [ 2, '...', "NA\nEU", "Emp\nEx-emp", "Active\nInactive" ], [ 3, '...', '...', '...', '...' ], ); $t->load( map { MapCarU { [ map { defined($_) ? $_ : '' } @_ ] } map { [ split $/ ], } @$_ } @rows, ); print $t;

produces

ID Name Source Type Assigment 1 ... ... ... ... 2 ... NA Emp Active EU Ex-emp Inactive 3 ... ... ... ...

Update: Based on blokhead's observation, the heart of the code can be made quite concise:

$t->load( map { MapCarU {[@_]} map [split $/], @$_ } @rows );

Update2: Replaced erroneous use of Filter with map.

- tye        

Replies are listed 'Best First'.
Re^2: Text::Table w/ newlines
by diotalevi (Canon) on Sep 04, 2004 at 00:26 UTC

    There's a diff to add this feature to Text::Table at http://grenekatz.org/downloads/perl/Text-Table-1.103.diff complete with extensions to the tests


    Values with newlines in them are split to the next line properly. I also added the $tb object as the return value of ->add and ->load so that method calls could be chained.

    print Text::Table ->new( qw( ID Name Source Type Assigment ) ) ->load( [ 1, '...', '...', '...', '...' ], [ 2, '...', "NA\nEU", "Emp\nEx-emp", "Active\nInactive" +], [ 3, '...', '...', '...', '...' ] ); ID Name Source Type Assignment 1 ... ... ... ... 2 ... NA Emp Active EU Ex-emp Inactive 3 ... ... ... ...