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/