Tôi biết tôi có thể liệt kê tất cả các gói và các biến lexcial trong một phạm vi nhất định sử dụng Padwalker
's peek_our
và peek_my
, nhưng làm thế nào tôi có thể nhận được tên và giá trị của tất cả các biến toàn cầu như $"
và $/
?Tôi làm cách nào để liệt kê tất cả các biến nằm trong một phạm vi nhất định?
#!/usr/bin/perl
use strict;
use warnings;
use PadWalker qw/peek_our peek_my/;
use Data::Dumper;
our $foo = 1;
our $bar = 2;
{
my $foo = 3;
print Dumper in_scope_variables();
}
print Dumper in_scope_variables();
sub in_scope_variables {
my %in_scope = %{peek_our(1)};
my $lexical = peek_my(1);
#lexicals hide package variables
while (my ($var, $ref) = each %$lexical) {
$in_scope{$var} = $ref;
}
##############################################
#FIXME: need to add globals to %in_scope here#
##############################################
return \%in_scope;
}
% chính :: giữ các biến gói như "$ foo" của chúng tôi, chứ không phải biến toàn cầu như $ /. –
Tôi lấy lại nó, tôi chỉ không nhận ra chúng bởi vì chúng đang thiếu mất dấu của chúng. Hmm, làm thế nào để tìm ra nếu họ là mảng, băm, hoặc vô hướng. –
bạn có thể sử dụng chức năng 'ref' được tích hợp sẵn để có được loại biểu tượng. – fido