【发布时间】:2010-01-23 18:42:18
【问题描述】:
我正在尝试在 Perl 中创建一个简单的小子,最好不要使用标准 RedHat linux 发行版中没有的任何模块。换句话说,越便携越好,因为我不能总是控制我在哪个系统环境中工作。明显的问题是将变量传递给子例程,以便可以使用原始变量名称和值。我可以得到一个或另一个,但如果没有更复杂的 sub 调用输入,我无法弄清楚如何做到这两个,如下所示。我可以传递一个字符串和一个引用,但这几乎就像用一个简单的本地打印它一样混乱:
print "\$A = $A\n";
也存在潜在的范围问题,但一步一步来。我现在在想,也许这不是那么简单。
(是的,这是我正在寻找的绝对懒惰的程序员代码)
示例伪代码:
my $A = 1;
my $secondVar = "something new";
my $XXX = 12345;
# Print a listing of the variables of interest in a nice easy to read listing
# with a minimum of typing.
printVars( $A, $secondVar, $XXX );
# Note I could settle for passing by reference \$A but no more complicated than this in
# the sub call. This is just a little utility sub to use to double check variables while
# coding something new.
输出:
$A = 1
$secondVar = something new
$XXX = 12345
一个粗略的 SUB:
sub printVars {
my @ListOfVars = @_;
my $i;
my ($theVarName, $theVarValue);
for( $i=0; $i<@ListOfVars; $i++) {
$theVarName = ??; # This is where things break down.
$theVarValue = $ListOfVars[$i];
print "$theVarName = $theVarValue\n";
}
}
感谢您提供的任何帮助..
享受.. --布莱恩
【问题讨论】:
-
您正在寻找一种用于转储变量的便携式解决方案:使用 Data::Dumper。我不明白你的论点,你想让我们提供一个纯粹的 perl 转储变量的方法吗? Data::Dumper 自 5.005 以来一直在 CORE 中。假设它不存在,只需安装它,如果您想要它的源代码,而不是要求人们重建它,只需转到 cpansearch.perl.org/src/SMUELLER/Data-Dumper-2.125/Dumper.pm 并获取纯 perl 源代码。此外,DD 也有一个 XS 变体,如果可用,它将使用它。
-
只想对大家说声谢谢。显然 Data::Dumper 是一个合理且受核心支持的解决方案。我想我们已经讨论了这个话题。
标签: perl