加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl的“存在”可以修改数据结构值吗?

发布时间:2020-12-15 21:14:35 所属栏目:大数据 来源:网络整理
导读:我有一个嵌套哈希表,如下所示: my %myhash = ( "val1" = { "A/B.c" = { "funct1" = 1 } },"val2" = { "C/D.c" = { "funct2" = 1 } }) 我的这个数据结构的目标是根据是否存在某些哈希表产生不同的值.例如, sub mysub{ my $val = shift; my $file = shift; my
我有一个嵌套哈希表,如下所示:
my %myhash = (
    "val1" => {
        "A/B.c" => {
            "funct1" => 1
        }
    },"val2" => {
        "C/D.c" => {
            "funct2" => 1
        }
    }
)

我的这个数据结构的目标是根据是否存在某些哈希表产生不同的值.例如,

sub mysub
{
    my $val = shift;
    my $file = shift;
    my $funct = shift;

    if (exists $myhash{$val}{$file}{$funct}) {
        return "return1";
    }
    if (exists $myhash{$val}{$file}) {
        return "return2";
    }
    return "return3";
}

我遇到的行为如下.我有一个时间的例子
我的$val =“val1”;
我的$file =“C / D.c”;
我的$funct =“funct3”;

在这个时候,返回值我得到“return2”.这些是我对Perl调试器的观察:

>首先在mysub中打破“if”
>打印p $proxToBugs {“val1”} {“C / D.c”} ==>返回空行.好的.继续,这个“if”被跳过.
>继续并在第二个“if”在mysub中断
>打印p $proxToBugs {“val1”} {“C / D.c”} ==>返回“HASH(0x …)”. WTF时刻.函数返回“return2”.

这告诉我,运行第一个如果修改了数据结构,这允许第二个如果通过,其实不应该.我正在运行的函数与上面显示的函数相同;这个只是消毒了.有人对我有解释吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读