hello
adott egy kis rendszer már mint erőforrásilag és néhány nagy állományt kell feldolgozni Perl-el.
Arra nincs elég hely, hogy egyben felparsoljam az összest fájlt szóval soronként kéne feldolgozni majd a feldolgozott sorokat kiküldeni egy hállózati csatolóra.
Na a gondom az h hogyan tudok soronkét feldolgozni?
Pl.
van 3x 2G fájl. Nincs elég RAM és SWAP h fel'szürcsöljem' (hamár Perl zsargont - slurp, akarok használni). Összekell őket fésülnöm egy rendezett táblába azaz meg kell nyitnom mind a 3 fájlt egyszerre, majd 1. sor az első fájlból, 1. sor másodikból és az 1. sor a harmadikból.
Szóval valmai ilyesmi kell de ez nem hiszem h jó:
open (FILE1, $file1) or die "The $file1 can't be openned: $!\n";
open (FILE2, $file2) or die "The $file2 can't be openned: $!\n";
open (FILE3, $file3) or die "The $file3 can't be openned: $!\n";
open (MERGE, ">merge.txt") or die "The merge.txt can't be openned: $!\n";
my $line1 = < FILE1 >;
my $line2 = < FILE2 >;
my $line2 = < FILE3 >;
# a helyes format nem jeleníti meg a HUP :(
my $counter = 0;
while (defined($line1) || defined($line2)|| defined($line3)) {
if (defined($line1)) {
print MERGE $counter,"\t",$line1;
$line1 = ;
}
if (defined($line2)) {
print MERGE $counter,"\t",$line2;
$line2 = ;
}
if (defined($line3)) {
print MERGE $counter,"\t",$line3;
$line2 = ;
}
$counter++;
}
mivel itt mind a 3 fájlt egyszerre betöltené a memóriába és az megfektetné a rendszert.
Az hiszem a seek az én barátom de nem értem hogyan tudnám használni.
http://perldoc.perl.org/functions/seek.html
seek(TEST,0,1);
Amint látszik nem vagyok programozó - de dolgozom a fejlődésemen :)