1 #!/usr/bin/perl -w 2 use strict; 3 use warnings; 4 5 #分割字符串的一个精妙的写法 6 sub spliteName 7 { 8 my $fileName = shift ; 9 my $arr_hash_ref = shift ;10 open my $fd ,'<',$fileName or die "open file $fileName error!";11 #文件格式如 :12 # girl: lily lucy may hallen # 关键字:名字(使用空格分开) 13 while( <$fd> )14 {15 #这种方法先将属性项保存在$1中去掉,再将剩下的用splite分隔得到数组,非常精妙16 next unless s/^(.+?):\s*// ;17 $$arr_hash_ref{$1} = [ split ];18 }19 }20 21 sub main22 {23 my $fileName = "test.txt";24 my %array_hash ;25 spliteName($fileName,\%array_hash);26 print_arr_hash(\%array_hash);27 }28 main();29 30 sub print_arr_hash31 {32 my $arr_hash_ref = shift ;33 for my $key (keys %$arr_hash_ref)34 {35 #注意这里是打印整个数组, 所以记得加上 @ 36 print "$key:@{$$arr_hash_ref{$key}} \n";37 }38 }