用perl模块修改hash值

15 篇文章 0 订阅

建立一个perl模块Test.pm

#!/usr/bin/perl -w
package Test;
require Exporter;
use strict;
use warnings;
use File::Basename;
our @ISA = qw(Exporter);
our @EXPORT = qw(parseChoose parseinterval parseconfig creatSubDir processTumorNorm getCanerType);
our @version = 1.0;


sub convert{
        my $self     = shift;
        my $hash_ref = shift;
        my %hash     = %{$hash_ref};
        $hash{'China'}{'province'} = 32;
        $hash{'japan'} = 'japanese';
        %{$hash_ref} = %hash;#这样不会修改$hash_ref的内存地址,所作修改能被b.pl脚本中的%china捕获
        #$hash_ref = \%hash #这样是错的,会修改$hash_ref的内存地址,b.pl脚本中的%china不会被修改
}
sub check{
        print "China\n";
}

再建立一个脚本:b.pl

#!/usr/bin/perl -w
use strict;
use lib '/mnt/lustre/user/wubin/01.Program/Scripts/01.script/GeneLab/PMSeq';#就算是在当前目录,这一行代码也不可缺少
use Test;

my %china = ();
$china{'territery'}{'Qin_dynasty'} = 1300;
$china{'territery'}{'now'} = 960;
$china{'population'}{'Ming_dynasty'} = 16000;
$china{'territery'}{'Tang_dynasty'} = 60;

my $hash_ref = \%china;
#foreach my $item(sort keys %{$hash_ref}){
#       foreach my $dynasty(sort keys %{$$hash_ref{$item}}){
#               print "$item\t$dynasty\t$$hash_ref{$item}{$dynasty}\n";
#       }
#}


my %country = %{$hash_ref};

$country{'territery'}{'Song'} = 300;

#print "$china{'territery'}{'Song'}\n";

my $a = bless {}, 'Test';

$a->convert(\%china);
#$a->check();

print "=========================\n";
print "$china{'japan'}\n";
print "$china{'China'}{'province'}\n";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值