http://qs321.pair.com?node_id=252280


in reply to Re: print format
in thread print format

I am searching on GeneBank data, I got 480 Accession number, for each Accession number, I need two items: item1 and items, so I have the print format like:
Accession item1 item2 12345678 abcd1234 als
because I generate each accession number first, for each accession number, I use foreach loop to generate item1 and item2, maybe some of the accession number have a couple of groups item1 and item2, maybe some of them have none item1 and item2 at all. I tried to use:
printf ("%08d",$accession);#which is before foreach loop. foreach (@accession){ .... $item1=....; $item2=....; printf("%16s%08s",$item1,$item2); }
It printed out so messy. Please help! Thanks!

Replies are listed 'Best First'.
Re: Re: Re: print format
by pfaut (Priest) on Apr 22, 2003 at 16:26 UTC

    Use a temporary variable. Set it to the value to print before entering the loop. After the first print in the loop, set it to an empty string. This assumes that the loop will produce at least one line of output.

    my ($print_accession) = sprintf("%08s",$accession); foreach (@accession) { ... $item1=...; $item2=...; printf("%8s%16s%8s\n",$print_accession,$item1,$item2); $print_accession = ""; }

    If you don't like your strings right aligned in their field, use '%-16s' - the minus indicates the field should be left aligned. See perldoc -f sprintf for details on the available formats.

    90% of every Perl application is already written.
    dragonchild