J'ai des problèmes pour écrire des données dans un fichier en utilisant Perl.Comment écrire dans le même fichier dans différents sous-programmes de Perl?
sub startNewOrder{
my $name = makeUniqueFileName();
open (ORDER, ">$name.txt") or die "can't open file: $!\n";
format ORDER_TOP =
PRODUCT<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<CODE<<<<<<<<AANTAL<<<<EENHEIDSPRIJS<<<<<<TOTAAL<<<<<<<
.
format ORDER =
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<< @<<<< @<<<<<< @<<<<<
$title, $code, $amount, $price, $total
.
close (ORDER);
}
Ceci est le sous-élément que j'utilise pour créer le fichier. (J'ai traduit la plupart de celui-ci.) La méthode makeUniqueFileName
crée un nom de fichier basé sur l'heure actuelle ("minuteshoursdayOrder"). Le problème maintenant est que je dois écrire dans ce fichier dans un autre sous.
sub addToOrder{
print "give productcode:";
$code = <STDIN>;
chop $code;
print "Give amount:";
$amount = <STDIN>;
chop $amount;
if($inventory{$code} eq undef){ #Does the product exist?
print "This product does not exist";
}elsif($inventory{$code}[2] < $amount && !defined($inventaris{$code}[2])){ #Is there enough in the inventory?
print "There is not enough in stock"
}else{
$inventory{$code}[2] -= $amount;
#write in order file
open (ORDER ">>$naam.txt") or die "can't open file: $!\n";
$title = $inventory{$code}[0];
$code = $code;
$amount = $inventory{$code}[2];
$price = $inventory{$code}[1];
$total = $inventory{$code}[1];
write;
close(ORDER);
}
%inventory
est un Hashtable qui a la productcode comme clé et un tableau avec le titre, le prix et le montant en tant que valeur. Il y a deux problèmes ici: quand j'entre un numéro de produit invalide, je dois encore entrer une quantité même si mon code indique qu'il devrait imprimer l'erreur directement après avoir vérifié s'il y a un produit avec le code donné.
Le deuxième problème est que l'écriture ne semble pas fonctionner. Il donne toujours une erreur "No such file or directory". Y at-il un moyen d'ouvrir le fichier ORDER que j'ai fait dans le premier sous sans avoir à faire $name
pas local? Ou juste un moyen d'écrire dans ce fichier? Je ne sais vraiment pas comment commencer ici. Je ne peux pas vraiment trouver beaucoup d'informations sur l'écriture d'un fichier qui a été fermé auparavant, et dans un autre sous.
Toute aide est appréciée,
Harm