- 论坛徽章:
- 7
|
本帖最后由 rubyish 于 2013-07-25 03:07 编辑
这样的:- #!/usr/bin/perl
- use 5.018;
- my ( $sep, @TO, %DIA, %COR, $T );
- print $sep = <DATA>;
- $sep = 0;
- while (<DATA>) {
- unless ($sep) {
- my ( $t, $cha, $dia, $pat ) = /(\w\d+)(\D)(\S+)(\d)/;
- $t or ( $sep = $_ ) and next;
- $DIA{"$pat"}{$t} = { DIA => $dia, DAT => "$cha$dia$pat" };
- push @TO, $t;
- }
- else {
- /^T/ ? ( ($T) = /(\w+)/ ) : ( $COR{$T} .= $_ );
- }
- }
- my @SORT = map {
- my $p = $_;
- map { T => shift @TO, DAT => $DIA{$p}{$_}{DAT}, XY => $COR{$_} },
- sort { $DIA{$p}{$a}{DIA} <=> $DIA{$p}{$b}{DIA} } keys $DIA{$p};
- } 5, 0, 1;
- print map { $_->{T}, $_->{DAT}, $/ } @SORT;
- print $sep;
- print map { $_->{T}, $/, $_->{XY} // '' } @SORT;
- __DATA__
- M48
- T01C.30
- T02C.80
- T03C.60
- T04C3.175
- T05C1.0
- T06C1.051
- %
- T01
- X0338Y031199
- X0349Y028301
- T02
- X044699Y0332
- X029799Y035499
- X028801
- T03
- X029799Y030701
- T04
- X029799Y032901
- T05
- Y028499
- T06
复制代码 |
|