【发布时间】:2020-07-26 17:21:06
【问题描述】:
我正在尝试创建一个日志,其中列出了我从包中导出的所有 perlvar,以用于调试目的。我无法从 @EXPORT 取消引用工作。
我有一个看起来像这样的包:
package my_lib;
use strict;
no strict 'refs';
use vars qw(@ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
our @ISA qw(Exporter);
our @EXPORT = qw();
use Exporter;
our $var1 = 1;
our $var2 = 5;
our $var3 = $var1 + $var2;
our @vars = [$var1, $var2];
my @my_exported = qw(
$var1
$var2
$var3
@vars
);
sub dump_vars {
foreach my $entry (@my_exported) {
# my $value =~ s/(\$\w+)/$1/eeg;
my $value =~ s/\$(\w+)/${$1}/g;
print "$entry = $value\n";
}
}
push(@EXPORT, @my_exported);
push(@EXPORT_OK, qw(&dump_vars));
1;
- 我已经尝试了这两个版本来取消引用 $value,但每次都会导致一个空字符串
然后我有 perl 脚本来生成一个包含包中所有值的日志:
#!/usr/bin/perl
use my_lib qw(dump_vars);
#dump_vars();
eval dump_vars();
- 我尝试了调用子程序的两个版本
我是这样使用这个脚本的:
gen_vars_lib_log.pl > vars_lib.log
我希望日志看起来像这样:
$var1 = 1
$var2 = 5
$var3 = 6
@vars = [1, 5]
但是,我得到了这个:
$var1 =
$var2 =
$var3 =
@vars =
有人可以帮我看看我缺少什么吗?我已经阅读了很多关于评估嵌入在字符串中的变量的页面,但我无法让它工作。
【问题讨论】:
标签: perl debugging scripting package dereference