2011-01-07 27 views
8

Tại sao tôi nhận được các giá trị từ "$ n" và "$ m" sau khi xóa các mục nhập bảng biểu tượng tương ứng?Biểu tượng bảng: xóa các mục

#!/usr/bin/env perl 
use warnings; 
use 5.012; 

package Foo; 

our $n = 10; 
our $m = 20; 

delete $Foo::{'n'}; 
delete $Foo::{'m'}; 

say $n; # 10 
say $m; # 20 

Trả lời

10

Do bảng biểu tượng chỉ được sử dụng tại thời gian biên dịch (hoặc thông qua tham chiếu tượng trưng). Quả cầu là giá trị của $Foo::{...} được tham chiếu trực tiếp bởi mã được biên dịch để mục nhập bảng biểu tượng không còn tồn tại không có hiệu lực.

Các vấn đề liên quan