首页 > 编程语言 >perl学习笔记15_把hasharray存储在文件中

perl学习笔记15_把hasharray存储在文件中

时间:2024-10-17 10:59:43浏览次数:9  
标签:15 my perl hasharray print data1 data0 store data2

目录

    可以把hash或array存储在文件中, 再从文件中把变量load回来

    #加载模块
    use Storable qw/store retrieve/;
    
    #定义变量
    my %data0 = ("a", "aaa", "b", "bbb", "c", "ccc", "d", "ddd"); #一个一维hash
    
    my %data1 = (); #一个二维hash
      $data1{"1"}  = \%data0; # value是对%data0的引用
    %{$data1{"2"}} =  %data0; # value是对%data0的copy+引用
    
    my @data2 = (1, 2, 3, \%data0, \%data0); # 一个array+hash混合结构
    
    #把变量存入文件
    store(\%data0, "data0.store");
    store(\%data1, "data1.store");
    store(\@data2, "data2.store");
    
    #从文件中把变量恢复回来
    my %data0_r = %{retrieve('data0.store')};
    my %data1_r = %{retrieve('data1.store')};
    my @data2_r = @{retrieve('data2.store')};
    
    #打印下恢复来的变量:
    print "data0:\n";
    foreach my $k (keys %data0_r) {
        print "$k => $data0_r{$k}\n";
    }
    print "\n";
    
    print "data1:\n";
    foreach my $k0 (keys %data1_r) {
        print "$k0\n";
        foreach my $k1 (keys %{$data1_r{$k0}}) {
            print "    $k1 => $data1_r{$k0}{$k1}\n";
        }
    }
    print "\n";
    
    print "data2:\n";
    foreach my $ele (@data2_r) {
        if (ref($ele) eq "") { # 标量
            print "$ele\n";
        } elsif (ref($ele) eq "HASH") { # hash
            print "HASH\n";
            foreach my $k (keys %{$ele}) {
                print "    $k => ${$ele}{$k}\n";
            }
        }
    }
    print "\n";
    
    

    输出内容:

    data0:
    b => bbb
    d => ddd
    a => aaa
    c => ccc
    
    data1:
    2
        d => ddd
        b => bbb
        c => ccc
        a => aaa
    1
        d => ddd
        b => bbb
        c => ccc
        a => aaa
    
    data2:
    1
    2
    3
    HASH
        c => ccc
        a => aaa
        b => bbb
        d => ddd
    HASH
        c => ccc
        a => aaa
        b => bbb
        d => ddd
    

    标签:15,my,perl,hasharray,print,data1,data0,store,data2
    From: https://www.cnblogs.com/gaiqingfeng/p/18471609

    相关文章

    • Android15音频进阶之4种调试线程死锁利器(八十九)
      简介:CSDN博客专家、《Android系统多媒体进阶实战》一书作者新书发布:《Android系统多媒体进阶实战》......
    • 【2024-10-15】习于破圈
      20:00“给予”比接受更令人快乐,这并不是因为“给予”是丧失、舍弃,而是因为我存在的价值正在于给予的行为。                                                 ——艾瑞克......
    • 20241016每日一题洛谷P1115
      普及-洛谷P1115最大子段和读题可知需要在一段一维数组中寻找一段唯一的区间,使区间内的数和最大,即寻找和最大区间可以想到前缀和的算法假设输入数组a[n]则前缀和数组b[n]=b[n-1]+a[n]那么从什么时候开始的一段区间才能使区间内的数和最大?从前缀和数组逐步来判断这一条......
    • 软考15——算法
      算法的特性文老师软考教育◆算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要特性。(1)有穷性。一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成。(2)确定性......
    • 20222315 2024-2025-1 《网络与系统攻防技术》实验二实验报告
      1.实验内容1.使用netcat进行虚拟机和主机的连接,cron启动周期性定时任务。2.使用socat让虚拟机操作主机,并调用提前准备的程序,启动任务计划。3.使用MSFmeterpreter(或其他软件)生成后门程序,利用ncat传送到主机让主机运行后门程序,虚拟机获取主机shell。4.使用MSFmeterpreter(或其他......
    • 10.15
      一.单选题(共3题,6分)1. (单选题,2分) 下列哪个不属于NoSQL数据库的特点? A灵活的可扩展性B灵活的数据模型C与云计算紧密融合D数据存储规模有限2. (单选题,2分) 下列哪一项不属于NoSQL的四大类型? A文档数据库B图数据库C列族数据......
    • 10.15
      今天数据结构,写了栈和队列实现回文,真的听一万遍不如动手一遍#include<stdio.h>include<stdlib.h>include<string.h>defineMAX_SIZE100typedefstruct{charitems[MAX_SIZE];inttop;}Stack;//初始化栈voidinitStack(Stack*s){s->top=-1;}//判断栈是否为......
    • 2024/10/15
      今天完成的是虚拟机mapduirce完成单词统计好的,下面是使用Java在Hadoop上运行一个完整的WordCountMapReduce作业的详细步骤,包括准备环境、编写代码、编译、运行和查看输出结果。好的,下面是使用Java在Hadoop上运行一个完整的WordCountMapReduce作业的详细步骤,包括准备环境、编......
    • 10.15
      今天完成了对于回文数的计算只是使用栈:点击查看代码#include<iostream>#include<stack>usingnamespacestd;boolisPalindrome(intnum){//将负数排除,因为负数不可能是回文数if(num<0)returnfalse;stack<int>stack;intoriginal=num;......
    • java学习10.15
      今天学习了java图形化编程importjava.awt.*;importjava.awt.event.*;publicclassFramePractice{publicstaticvoidmain(String[]args){Frameframe=newFrame();//Frame是窗体,我们只需要创建这样一个对象就可以了,这样就会直接创建一个新的窗口......