Brad Cahoon wrote:
Hi Perl Masters

I have a problem with a script which is suposed to open a huge text
file and take 70 lines, create a file, then take the next 70 lines
create a file and so on until it has parsed the whole file. My code
just doesn't work and my brain cannot figure out while{while{}} loops
Help please.

Thanks
Brad


Code:

#!  /usr/bin/perl

my $input = 'test12.txt';
my $end= '.txt';
my $fileno=1;
my $lineno=1;
open BIG, "test12.txt", or die "can't $!";

while (<BIG>) {

print "$lineno";
$newfile = "$fileno$end";
$fileno++;
open  NEW  ,"> $newfile";

while ($lineno < 71){
$lineno++;
print NEW  $_;
}}

Either your inner while loop needs to read from the input file or it should be
an 'if' instead of a while. See if you like the solution below.

HTH,

Rob


use strict;
use warnings;

my $input = 'test12.txt';
my $end = '.txt';
my $fileno;
my $lineno;

open my $big, $input, or die $!;
my $out;

while (<$big>) {

  unless ($lineno) {
    my $file = sprintf "%d%s", ++$fileno, $end;
    open $out, '>', $file or die $!;
  }

  print $out $_;
  ++$lineno;

  if ($lineno >= 70) {
    close $out;
    $lineno = 0;
  }
}

close $out if $lineno;


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


Reply via email to