[EMAIL PROTECTED] wrote:
The following script is to read 4 consecutive lines at a time from a
file, concatenate the first 3 lines
(with a ", "), and print the result to STDOUT.  If the 3 lines aren't
concatenated they print correctly, however
if they are, the result is gibberish.  Any suggestions.   thx., EC.

I tried your program and I don't see where the problem lies? If you could show what the output is supposed to look like and what the actual output looks like?


--------------------------------------------------------------------------------------------------------------------------------------------------
#!/bin/perl

use warnings;
use strict;

#  Read a series of 4 rows from a file and print the first 3 on
#  the same line.

$file = 'example.txt';                # Name the file

my $file = 'example.txt';

open(INFO, $file);                      # Open the file

You should *always* verify that the file opened correctly:

open INFO, '<', $file or die "Cannot open '$file' $!";

$row_num = 0;
while (<INFO>) {
    $i = $row_num%4;

Why not just use Perl's built-in $. variable?

perldoc perlvar

    if ($i <= 2) {
        $col[$i] = "$_";
    }
    if ($i <= 1) {
        chomp ($col[$i]);
    }
    if ($i == 2) {
        #$row = join (', ', @col);
        printf ("%s", $col[0]);
        printf (", ");
        printf "%s, ", $col[1];
        printf "%s\n", $col[2];

You don't really need printf there:

        print "$col[0]";
        print ", ";
        print "$col[1], ";
        print "$col[2]\n";

Or simply:

        print "$col[0], $col[1], $col[2]\n";

    }
    $row_num++;
}
close(INFO);                            # Close the file


John
--
Perl isn't a toolbox, but a small machine shop where you
can special-order certain sorts of tools at low cost and
in short order.                            -- Larry Wall

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to