http://www.perlmonks.org?node_id=43094

Q&A > files > How do I split a file into parts - Answer contributed by galande

Hi,
If you want to split one file into lot of files use that pattern as your record separator, that is $/.
Try this one ...
#! /usr/bin/perl -w my $infil = $0; my $separator = "XXFFDDF"; local $/ = $separator; sysopen(INFIL,$infil,O_RDONLY) || die "Can't open $infil: $!.\n"; while(<INFIL>){ my $out_file = "$infil.$."; # s/$separator//; ### if you want to remove your file separator also, uncomment above li +ne ..... sysopen(OUT,$file,O_RDWR|O_CREAT|O_EXCL) || die "Can't open for wri +te tst.$.: $!.\n"; print OUT $_; } close(INFIL);

Replies are listed 'Best First'.
Re: Answer: How do I split a file into parts
by repson (Chaplain) on Nov 23, 2000 at 17:55 UTC
    This code would work fine but has the disadvantage of storing an entire file of data in $_. While the file you are splitting would not be likely to have huge sections between the $seperator's you might never know if the code could be used in a situation where we are placing large amounts of data into memory.