in reply to Re^2: Formatting of printed SQL Query output
in thread Formatting of printed SQL Query output

I doubt very much that your data arrives as strings, but you've not given us anything else so:

use strict; use warnings; my @rows = ( '16444 3M Singapore', '10167 ABB Schweiz (CHHOS) - SAP', '13916 ABB Turbo Systems AG - LVS', '10163 ABB Turbo Systems AG - SAP', '8683 ABC', ); printf "%6d %s\n", split ' ', $_, 2 for @rows;

Prints:

16444 3M Singapore 10167 ABB Schweiz (CHHOS) - SAP 13916 ABB Turbo Systems AG - LVS 10163 ABB Turbo Systems AG - SAP 8683 ABC

See printf.


DWIM is Perl's answer to Gödel

Replies are listed 'Best First'.
Re^4: Formatting of printed SQL Query output
by ww (Archbishop) on Jun 29, 2007 at 14:07 UTC

    ...or, since you ask for with borders (presumably to make it look like directly using your db's output capabilities), print your headers and initial set of borders outside the loop, and modify GrandFather's printf slightly (to provide the column-separating border, as follows:

    use strict; use warnings; print " Co.ID \t|\tNAME\n"; print "-------\t|------------------------\n"; my @rows = ( '16444 3M Singapore', '10167 ABB Schweiz (CHHOS) - SAP', '13916 ABB Turbo Systems AG - LVS', '10163 ABB Turbo Systems AG - SAP', '8683 ABC', ); printf "%6d\t|\t%s\n", split ' ', $_, 2 for @rows;

    OUTPUT:

     Co.ID  |       NAME
    ------- |------------------------
     16444  |       3M Singapore
     10167  |       ABB Schweiz (CHHOS) - SAP
     13916  |       ABB Turbo Systems AG - LVS
     10163  |       ABB Turbo Systems AG - SAP
      8683  |       ABC
    

    Minor Note: Since laziness is a virtue, check on the string repetition operator (for example, p25 of "Learning Perl," O'Reilly, Randal L. Schwartz & Tom Phoenix, which should be on your bookshelf) for a way to get the multiple "-"s with fewer keystrokes.
Re^4: Formatting of printed SQL Query output
by vic07 (Initiate) on Jul 03, 2007 at 04:44 UTC
    hello all, thank you for your replies, they have been very helpful i used this command (as displayed above)
    printf "%6d %s\n", split ' ', $_, 2 for @rows;
    and I get this output displayed on my DOS screen
    16444 3M Singapore 0 10167 ABB Schweiz (CHHOS) - SAP 0 13916 ABB Turbo Systems AG - LVS 0 10163 ABB Turbo Systems AG - SAP 0 8683 ABC
    How do I get rid of the '0' that keeps appearing in between the lines??? thanks again

      You have blank lines or some such garbage in @rows.

      I strongly recommend that you use strictures (use strict; use warnings;). If you had warnings turned on you would have seen warnings like:

      Use of uninitialized value in printf at noname.pl line 16.

      interspersed through your output. Do you need to chomp your lines before they are added to the array?


      DWIM is Perl's answer to Gödel