- 论坛徽章:
- 2
|
本帖最后由 os4fun 于 2014-07-10 22:09 编辑
来个丑陋的,局限于数据本身的规律。唯一好处是超大数据时候比楼上省资源
code包含的代码里连续的两个$$会被吃掉一个? 我用4个$$,送2个给他吃:wink:- $cat b
- #!/usr/bin/perl
- use warnings;
- use strict;
- sub merge_range {
- my ($val_min, $val_max, $v_min, $v_max) = @_;
- $$val_max >= $$v_min && { $$v_min = $$val_min, return 0} || 1;
- }
- BEGIN { *ARGV = *DATA unless @ARGV }
- print scalar <>;
- my ($key, $val_min, $val_max) = split /[:-]/, <>;
- while(<>) {
- my ($k, $v_min, $v_max) = split /[:-]/;
- print "$key:$val_min-$val_max" if $k ne $key or merge_range(\$val_min, \$val_max,\$v_min, \$v_max);
- ($key, $val_min, $val_max) = ($k, $v_min, $v_max);
- }
- print "$key:$val_min-$val_max";
- __DATA__
- Name distance
- name1 dis1:1-5
- name1 dis1:2-6
- name1 dis1:7-9
- name1 dis1:10-12
- name1 dis1:11-14
- name2 dis2:5-8
- name2 dis2:6-12
- name2 dis2:7-14
- name2 dis2:14-15
- name2 dis2:17-19
- name2 dis2:20-22
- name2 dis2:21-25
- $./b
- Name distance
- name1 dis1:1-6
- name1 dis1:7-9
- name1 dis1:10-14
- name2 dis2:5-15
- name2 dis2:17-19
- name2 dis2:20-25
- $
复制代码 |
|