Trong Perl, bạn có thể gọi một chức năng bằng cách tham chiếu (hoặc tên) như sau:Perl: Vấn đề gọi chương trình con bằng cách tham khảo cách sử dụng một giá trị băm
my $functionName = 'someFunction';
&$functionName();
#someFunction defined here:
sub someFunction { print "Hello World!"; }
Những gì tôi đang cố gắng để làm sử dụng là một giá trị từ một Hash, như vậy:
my %hash = (
functionName => 'someFunction',
);
&$hash{functionName}();
#someFunction defined here:
sub someFunction { print "Hello World!"; }
Và lỗi tôi nhận được là biểu tượng toàn cầu "$ hash" yêu cầu tên gói rõ ràng.
Câu hỏi của tôi là: Có cách nào đúng để thực hiện việc này mà không sử dụng biến trung gian không?
Bất kỳ trợ giúp nào về điều này sẽ được đánh giá rất nhiều!
Bạn cũng có thể thực hiện 'my% hash = (function => \ & someFunction)' mà không yêu cầu 'không có stric t 'refs''. – TLP
@TLP +1, tôi sẽ trả lời * câu trả lời này. 'sử dụng nghiêm ngặt;' lưu ** vì vậy ** nhiều rắc rối ... – Dallaylaen
Tôi có thể sử dụng nó, nhưng nó thêm một số mã không đọc được (hiện tại) ... Tôi đang tự động đặt giá trị của functionName tại thời gian chạy và gọi một hàm theo tên của nó. Perl rất vui! – Thumper