#! perl -slw use strict; use Data::Dump qw[ pp ]; my @a = map[ split ], ; substr( $a[$_-1][0],0,-1 ) eq substr( $a[$_][0],0,-1 ) and do{ $a[$_-1][1] += $a[$_][1]; splice @a, $_, 1; } for reverse 1 .. $#a; pp \@a; __DATA__ 19.25.55.11.144.0 5 19.25.55.14.16.0 12 19.25.59.200.208.0 8 19.25.59.204.160.0 7 19.25.60.5.176.0 4 19.25.60.15.48.0 0 19.25.60.17.240.0 3 19.25.60.18.96.0 5 19.25.115.138.224.0 30 19.25.115.141.32.0 4 26.109.108.64.144.0 1 38.153.162.89.0.0 1 38.153.162.89.0.1 0 38.153.162.89.96.0 0 38.153.162.89.96.1 0 38.153.162.95.64.0 0 38.153.162.95.64.1 0 58.152.64.24.192.0 1 58.152.64.24.192.1 0 58.152.64.46.48.0 3 58.152.64.46.48.1 0 58.152.94.71.0.0 1 58.152.94.71.0.1 0 #### C:\test>junk [ ["19.25.55.11.144.0", 5], ["19.25.55.14.16.0", 12], ["19.25.59.200.208.0", 8], ["19.25.59.204.160.0", 7], ["19.25.60.5.176.0", 4], ["19.25.60.15.48.0", 0], ["19.25.60.17.240.0", 3], ["19.25.60.18.96.0", 5], ["19.25.115.138.224.0", 30], ["19.25.115.141.32.0", 4], ["26.109.108.64.144.0", 1], ["38.153.162.89.0.0", 1], ["38.153.162.89.96.0", 0], ["38.153.162.95.64.0", 0], ["58.152.64.24.192.0", 1], ["58.152.64.46.48.0", 3], ["58.152.94.71.0.0", 1], ]