У меня проблемы с записью данных в файл с использованием 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);
}
Это подпрограмма, которую я использую для создания файла. (Я перевел большую часть этого.)
Метод makeUniqueFileName
создает fileName на основе текущего времени (minuteshoursdayOrder).
Теперь проблема в том, что я должен написать в этот файл в другой подпрограмме.
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
- это хеш-таблица с ключом продукта и массивом с названием, ценой и суммой в качестве значения.
Здесь есть две проблемы:
когда я ввожу недопустимый номер продукта, мне все равно придется вводить сумму, даже если мой код говорит, что он должен напечатать ошибку непосредственно после проверки, существует ли продукт с данным кодом.
Вторая проблема заключается в том, что письмо не работает. Это всегда выдает ошибку «Нет такого файла или каталога». Есть ли способ открыть файл ORDER, который я сделал в первом сабвуфере, без необходимости делать $name
не локальным? Или просто способ записи в этот файл? Я действительно не знаю, как начать здесь. Я не могу найти много информации о записи файла, который был закрыт ранее, и в другой подпрограмме.
Любая помощь приветствуется,
Вред