Avatar billede billeschou Nybegynder
13. maj 2002 - 12:44 Der er 6 kommentarer og
1 løsning

append'e en linie i begyndelsen af en eksisterende fil

Jeg står og mangler en idé til hvordan ovenstående kan gøres. Mit problem er at jeg autogenererer nogle filer vha. et C++-program. Disse filer scannes så via diverse perl-scripts. Hvis de pågældende filer ikke indeholder en linie der fungerer som en slags header, går perl-scriptet galt. Tanken er så at kontrollere om de genererede filer rent faktisk indeholder denne headerlinie.
Her er hvad jeg er kommet frem til indtil videre:

open ($fh, "+<xxx.yyy");
$line = <$fh>;
$line = substr($line,0,3);

if($line ne "esr")
{
  #her appendes hvis headerinfo mangler
}

jeg havde tænkt mig noget i stil med:
print $fh "et-eller-andet";

men det vil jo skrive den pågældende linie i slutningen af filen og det kan jeg ikke bruge til noget.
Avatar billede erikjacobsen Ekspert
13. maj 2002 - 12:58 #1
Du skal lave en ny fil. Først skrive headerlinien, og så resten af
den gamle fil. Slet den gamle, og omdøb den nye til den gamle.
Avatar billede billeschou Nybegynder
13. maj 2002 - 13:21 #2
hmmmm... det var også den ide jeg var kommet frem til først men håbede egentlig at der var en smartere metode. Nu ved jeg jo at du er en temmelig hård programmør, så jeg tvivler på at det er tilfældet ;-)
Læg lige et svar så får du pointene...
Avatar billede erikjacobsen Ekspert
13. maj 2002 - 13:27 #3
Gem du bare dine point til et svært spørgsmål :)
Avatar billede billeschou Nybegynder
13. maj 2002 - 13:34 #4
mens jeg husker det:

hvordan skriver man resten af den gamle fil?

print $fh2 $fh; ? (forudsat at $fh er åbnet med læserettigheder)
Avatar billede erikjacobsen Ekspert
13. maj 2002 - 14:07 #5
Du skriver den ud linie for linie
Avatar billede billeschou Nybegynder
13. maj 2002 - 14:35 #6
ok tak for hjælpen :-)
jeg har dog ikke kunnet få det til at virke...

den linie der er kommenteret ud i nedenstående, giver en GLOB fejl (der angives en hex adresse). Hvorfor det?

chdir("/at/test/inttra-out");
open ($fh, "<INTTRA-12.out");
$line = <$fh>;
print substr($line,0,3);

if (substr($line,0,3) ne "ESR")
{
    print "\nHurra!\n";
    open ($fh2, ">>temp.out");
    open ($fh3, "<INTTRA-2.out");
    $line2 = <$fh3>;
    print $line2;
    #print $fh2, $line2;
    close ($fh);
    unlink "INTTRA-12.out";
    close ($fh2);
    print `copy temp.out INTTRA-12.out`;
    unlink "temp.out";
}
Avatar billede billeschou Nybegynder
31. maj 2002 - 21:00 #7
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester