Có điều sau đây:Trọng là "eval" trong perl
use 5.014;
use warnings;
BEGIN {
use subs qw(int);
sub int {
print STDERR "\tthe int got: $_[0]\n";
my $res = CORE::int($_[0]);
print STDERR "\tCORE::int: $res\n";
return $res;
}
}
my $x;
$x = 1.1 ; say "result of int($x) is: ", int($x);
$x = 6.6 ; say "result of int($x) is: ", int($x);
nó in
the int got: 1.1
CORE::int: 1
result of int(1.1) is: 1
the int got: 6.6
CORE::int: 6
result of int(6.6) is: 6
Chức năng int
được ghi đè bởi chức năng của riêng tôi, mà hiện một số debug-in, và trả về kết quả của việc thực hiện bản gốc (CORE).
Tìm kiếm tương tự cho số eval
. Tuy nhiên, có lẽ vì eval
không phải là chức năng như số ghi đè như trên int
như trên không hoạt động đối với eval.
Có thể đạt được điều này một chút không? Ví dụ. muốn ghi đè lên eval
(các eval "$string"
) với eval của riêng tôi như trên, ví dụ:
- nên in chuỗi có
- và nên gọi việc thực hiện cốt lõi của eval
EDIT: Theo để bình luận ở trên là không thể cho các eval
. Vì vậy:
Tóm lại: muốn in gỡ lỗi tất cảeval "$strings"
trong chương trình của tôi trước khi đánh giá. Có thể có phần nào?
Ít nhất phải đăng ký http://perldoc.perl.org/CORE.html có vẻ như 'eval' không tồn tại dưới dạng' CORE :: eval', điều tôi tin là có nghĩa là từ khóa Perl thiếu một phương tiện bị ghi đè. – DavidO
@DavidO Được chứng thực bởi [câu trả lời này] (http://stackoverflow.com/a/3678957/176646) cho một câu hỏi liên quan. – ThisSuitIsBlackNot
['overload :: eval'] (https://metacpan.org/pod/overload::eval) – ThisSuitIsBlackNot