[EMAIL PROTECTED] wrote:
> 
> On Apr 26, 9:55 am, [EMAIL PROTECTED] (Rob Dixon) wrote:
>>
>> [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;
>>
>> }
>>
>> printjoin(', ', @col), "\n";- Hide quoted text -
>
> I tried your suggestion and got the following output:
> 1) the first col didn't print, and the 3rd col overwrote the 2nd; this
> is the main stumbling block
> 2) also, what if example.txt has 36 lines with the same format as
> described.
> FYI I'm using cgywin's version of perl.

Try changing the while loop to

  while (<INFO>) {
    s/\s+$//;
    push @col, $_;
    last if @col == 3;
  }

Rob



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


Reply via email to