我想得到传递给子程序的变量类型.虽然谷歌搜索我遇到了下面的解决方案,但这没有给出满意的结果.我的问题在下面的例子中说明
sample("test");
sample(\%a);
sub sample {
my ($argv1) = @_;
if(ref($argv1) eq "STRING") {
print "string\n";
}
elsif(ref($argv1) eq "HASH") {
print "HASH\n";
}
}
Run Code Online (Sandbox Code Playgroud)
ref永远不会产生"STRING".(好吧,除非你创建一个STRING类并祝福一个对象.)普通字符串不是引用,所以ref返回一个false值:
sample("test");
sample(\%a);
sub sample {
my ($argv1) = @_;
if(not ref($argv1)) {
print "string\n";
}
elsif(ref($argv1) eq "HASH") {
print "HASH\n";
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5766 次 |
| 最近记录: |