Tôi đang chạy một chương trình trong Perl mà tại một thời điểm đánh giá dữ liệu trong câu lệnh if được gọi từ bên trong một chương trình con, ví dụ:Trong Perl có cách nào để khởi động lại chương trình hiện đang chạy từ bên trong chính nó không?
sub check_good {
if (!good) {
# exit this subroutine
# restart program
}
else {
# keep going
}
} # end sub
Sự cố tôi gặp phải khi thoát và khởi động lại. Tôi biết rằng tôi chỉ có thể sử dụng exit 0;
để thoát ra ngay lập tức, nhưng rõ ràng điều này là không chính xác nếu tôi muốn quay lại phần đầu. Tôi đã thử gọi chương trình con mà về cơ bản bắt đầu chương trình, nhưng tất nhiên một khi nó đã chạy nó sẽ quay trở lại điểm này một lần nữa. Tôi nghĩ về việc đặt nó trong một vòng lặp while, nhưng điều này có nghĩa là đặt toàn bộ tập tin trong vòng lặp và nó sẽ rất không thực tế.
Tôi thực sự không biết liệu điều này có khả thi hay không, vì vậy mọi đầu vào đều tuyệt vời.
tha thứ cho sự thiếu hiểu biết của tôi - Tôi biết @ARGV được sử dụng cho các đối số dòng lệnh, nhưng tôi đã sử dụng Tôi giả sử rằng họ lưu trữ dữ liệu trong cùng một vị trí bộ nhớ (hoặc một cái gì đó) ?. –
dgBP
Đó là một khẳng định bạn có thể dễ dàng kiểm tra. – DavidO
Nếu bạn tiêu thụ stdin thì bạn sẽ phải tự đệm nó, có lẽ trong một tệp tạm thời. – tripleee