#!/usr/bin/perl

use warnings;
use strict;

use Data::Dump qw(dump);
use Text::xSV;


my $file = $ARGV[0] || 'links.csv';

my %rules = (qr/00whois\.(ht|x)ml/ => 'cpan',
            );


my $csv = Text::xSV->new;
$csv->open_file($file);
$csv->read_header;

# alle Zeilen einlesen
my %links = ();
my %tags  = ();
while (my $row = $csv->fetchrow_hash) {
    my $link = $row->{Links};

    # passt eine Regel?
    my $match = 0;
    while (my ($regex, $tag) = each %rules) {
        if ($link =~ $regex) {
            $tags{$tag}++;
            $match++;
        }
    }

    $links{$link}++ unless $match;
}

# verbleibende Links vereinigen
my $last = '';
my @links = sort keys %links;
foreach my $link (@links) {
    if ($last and $link =~ /^\Q$last\E/) {
        # vereinigen
        $links{$last} += delete $links{$link};
    } else {
        $last = $link;
    }
}

print dump(\%tags, \%links);
