建立一个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";