本帖最后由 sunzhiguolu 于 2016-10-27 10:22 编辑
回复 5# jason680
谢谢大神指点, 您提醒的太对了. 我太马虎了。
- #!/usr/bin/perl
- use strict;
- use warnings;
- sub Load{
- local @ARGV = shift;
- my $rh = shift;
- while (<>){
- my ($num, $name) = split;
- $rh->{$num} = $name;
- }
- }
- sub Load1{
- local @ARGV = shift;
- my $rh = shift;
- while (<>){
- my ($num, $name, $id) = split;
- push (@{$rh->{$id}}, [$num, $name]);
- }
- }
- my ($rhReg, $rhCity, $rhCom) = ({}, {}, {});
- Load (shift, $rhReg);
- Load1 (shift, $rhCity);
- Load1 (shift, $rhCom);
- foreach my $rNum (sort keys %$rhReg){
- my $rName = $rhReg->{$rNum};
- my @aCity = $rhCity->{$rNum} ? @{$rhCity->{$rNum}} : ();
- print join (', ', $rNum, ($rName) x 3), "\n";
- my $ge1 = 0;
- foreach my $raCity (@aCity){
- my ($cNum, $cName) = @$raCity;
- my @aCom = $rhCom->{$cNum} ? @{$rhCom->{$cNum}} : ();
- if (!@aCom and $ge1++){
- print join (', ', $rNum, $rName, ($cName) x 2), "\n";
- next;
- }
- foreach my $raCom (@aCom){
- my $com = $raCom->[-1];
- print join (', ', $rNum, $rName, $cName, $com), "\n";
- }
- }
- }
复制代码 perl abc.pl sheng shi qu
--------------------------------------------------------------------
1, 北京市, 北京市, 北京市
1, 北京市, 北京市, 东城区
1, 北京市, 北京市, 西城区
1, 北京市, 北京市, 崇文区
1, 北京市, 北京市, 宣武区
1, 北京市, 北京市, 朝阳区
1, 北京市, 北京市, 丰台区
1, 北京市, 北京市, 石景山区
1, 北京市, 北京市, 海淀区
1, 北京市, 北京市, 门头沟区
1, 北京市, 北京市, 房山区
2, 天津市, 天津市, 天津市
3, 河北省, 河北省, 河北省
3, 河北省, 唐山市, 唐山市
3, 河北省, 秦皇岛市, 秦皇岛市
3, 河北省, 邯郸市, 邯郸市
3, 河北省, 邢台市, 邢台市
3, 河北省, 保定市, 保定市
3, 河北省, 张家口市, 张家口市
3, 河北省, 承德市, 承德市
4, 山西省, 山西省, 山西省
5, 内蒙古自治区, 内蒙古自治区, 内蒙古自治区
6, 辽宁省, 辽宁省, 辽宁省
7, 吉林省, 吉林省, 吉林省
8, 黑龙江省, 黑龙江省, 黑龙江省
|