Perl: probleem met filehandler
Geplaatst: wo 25 mei 2011, 23:23
Hoi allemaal,
Ik ben op school bezig met een cursus programmeren met perl, dus het is allemaal nog vrij nieuw voor me. Ik zit in de knoop met het schrijven van programma. Ik hoop dat iemand me een hint kan geven om me de goede weg op te sturen zodat ik verder kan proberen het programma te laten werken.
Ik wil in een bestand een aantal getallen plaatsen. En de naam van dat bestand moet aan de gebruiker gevraagd worden. Dit wil ik doen met behulp van een filehandler.
Ik heb tot nu toe dit geschreven, hij vraagt hoe het bestand moet heten en opent de filehandler:
----------------------------------------
#!/usr/bin/perl -w -s
print "Voer de bestandsnaam in en zet de extensie .txt erachter:\n";
$bestand = <STDIN>;
chomp $bestand;
#Bestand openen met filehandler
open(FHWRITE, ">$bestand");
----------------------------------------
Het is de bedoeling dat in het bestand de even getallen van -100 tot en met 100 komen te staan. Met uitzondering op de getallen -12 en 98, die mogen er niet tussen staan.
Dus ik heb een loop gemaakt die alle even getallen van -100 tot 100 weergeeft.
Ik heb in de loop de getallen -12 en 98 nog niet weggehaald daar moet ik nog naar kijken. Ik zat te denken om later de filehandler weer te openen en die twee getallen eruit te halen als dat mogelijk is?
Dit is de loop:
----------------------------------------
$begingetal = -102;
while($begingetal !=100){
$begingetal +=2; print "$begingetal\n";
}
----------------------------------------
Om in het bestand te schrijven zal ik print "$begingetal\n" wel weglaten, dat had ik erbij gezet om te kunnen kijken of de loop werkte.
Nu heb ik het volgende bedacht:
----------------------------------------
#!/usr/bin/perl -w -s
print "Voer de bestandsnaam in en zet de extensie .txt erachter:\n";
$bestand = <STDIN>;
chomp $bestand;
#Bestand openen met filehandler
open(FHWRITE, ">$bestand");
#Lus naar bestand wegschrijven
print FHWRITE $begingetal = -102;
while($begingetal !=100){
$begingetal +=2}
#Inhoud van het bestand in een array plaatsen
@inhoudbestand = <FHWRITE>;
#de filehandler afsluiten
close FHWRITE;
#Inhoud van het bestand op scherm tonen
print "@inhoudbestand";
exit;
----------------------------------------
Om het gehele bestand later weer op het scherm te tonen heb ik het in een array gezet. Alleen het werkt niet om het op het scherm te tonen
Als ik op de computer kijk is het bestand wel aangemaakt, en als ik het open staat er ook iets ingeschreven. Alleen er komt alleen -102 in te staan.
Is het wel mogelijk om op deze manier een loop in een bestand weg te schrijven?
Bij voorbaat dank!
Ik ben op school bezig met een cursus programmeren met perl, dus het is allemaal nog vrij nieuw voor me. Ik zit in de knoop met het schrijven van programma. Ik hoop dat iemand me een hint kan geven om me de goede weg op te sturen zodat ik verder kan proberen het programma te laten werken.
Ik wil in een bestand een aantal getallen plaatsen. En de naam van dat bestand moet aan de gebruiker gevraagd worden. Dit wil ik doen met behulp van een filehandler.
Ik heb tot nu toe dit geschreven, hij vraagt hoe het bestand moet heten en opent de filehandler:
----------------------------------------
#!/usr/bin/perl -w -s
print "Voer de bestandsnaam in en zet de extensie .txt erachter:\n";
$bestand = <STDIN>;
chomp $bestand;
#Bestand openen met filehandler
open(FHWRITE, ">$bestand");
----------------------------------------
Het is de bedoeling dat in het bestand de even getallen van -100 tot en met 100 komen te staan. Met uitzondering op de getallen -12 en 98, die mogen er niet tussen staan.
Dus ik heb een loop gemaakt die alle even getallen van -100 tot 100 weergeeft.
Ik heb in de loop de getallen -12 en 98 nog niet weggehaald daar moet ik nog naar kijken. Ik zat te denken om later de filehandler weer te openen en die twee getallen eruit te halen als dat mogelijk is?
Dit is de loop:
----------------------------------------
$begingetal = -102;
while($begingetal !=100){
$begingetal +=2; print "$begingetal\n";
}
----------------------------------------
Om in het bestand te schrijven zal ik print "$begingetal\n" wel weglaten, dat had ik erbij gezet om te kunnen kijken of de loop werkte.
Nu heb ik het volgende bedacht:
----------------------------------------
#!/usr/bin/perl -w -s
print "Voer de bestandsnaam in en zet de extensie .txt erachter:\n";
$bestand = <STDIN>;
chomp $bestand;
#Bestand openen met filehandler
open(FHWRITE, ">$bestand");
#Lus naar bestand wegschrijven
print FHWRITE $begingetal = -102;
while($begingetal !=100){
$begingetal +=2}
#Inhoud van het bestand in een array plaatsen
@inhoudbestand = <FHWRITE>;
#de filehandler afsluiten
close FHWRITE;
#Inhoud van het bestand op scherm tonen
print "@inhoudbestand";
exit;
----------------------------------------
Om het gehele bestand later weer op het scherm te tonen heb ik het in een array gezet. Alleen het werkt niet om het op het scherm te tonen
Als ik op de computer kijk is het bestand wel aangemaakt, en als ik het open staat er ook iets ingeschreven. Alleen er komt alleen -102 in te staan.
Is het wel mogelijk om op deze manier een loop in een bestand weg te schrijven?
Bij voorbaat dank!