【发布时间】:2017-05-29 13:29:15
【问题描述】:
我正在尝试使用 perl 编写我的自定义 validateParameter 函数。
实际上我有以下代码也有效:
sub validateParameter {
my ($args, $list) = @_;
if ( ref($list) eq "ARRAY" ) {
foreach my $key (@$list) {
if ( not defined $args->{$key} ) {
die "no $key given!";
}
}
}
#elsif ( check if string ) {
#}
}
我想通过以下方式调用我的函数:
validateParameter({ hallo => "Welt", test => "Blup"}, ["hallo", "test"]);
但我也想这样调用我的函数:
validateParameter({ hallo => "Welt", test => "Blup"}, "hallo");
如何检查给定的 arg 是否为“字符串”?
我知道 perl 只有以下三种数据类型(标量、散列、数组)。但也许有一个聪明的方法来检查一个变量是否是一个字符串。
谢谢大家。
【问题讨论】:
-
您的意思是“字符串”而不是“数字”吗?还是“字符串”而不是“arrayref/hashref/...”?然后
ref是要走的路(就像你已经做过的那样)。它为简单的非引用标量返回一个空字符串(比如你的$list)。 -
哦,好吧,我的错:D。这个帖子完成了。谢谢@PerlDuck
标签: function perl arguments subroutine