[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.
> --------------------------------------------------------------------------------------------------------------------------------------------------
> #!/bin/perl
> #  Read a series of 4 rows from a file and print the first 3 on
> #  the same line.
> 
> $file = 'example.txt';                # Name the file
> open(INFO, $file);                      # Open the file
> $row_num = 0;
> while (<INFO>) {
>     $i = $row_num%4;
>     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];
>     }
>     $row_num++;
> }
> close(INFO);                            # Close the file

Something like this is, I believe, easier both to code and to understand.

HTH,

Rob


use strict;
use warnings;

use constant FILE => 'example.txt';

open INFO, FILE or die $!;

my @col;

while (<INFO>) {
  chomp;
  push @col, $_;
  last if @col == 3;
}

print join(', ', @col), "\n";

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


Reply via email to