#! /usr/bin/perl use strict; use warnings; use Data::Dumper; my @dates = (); while(my $line = ) { my @parts = split(/&&/,$line); push @dates, { Start => $parts[0], End => $parts[1], Text => $parts[2], }; } my @colitions = (); for(my $i = 0; $i < @dates; ++$i) { for(my $j = $i+1; $j < @dates; ++$j) { if($dates[$i]->{Start} >= $dates[$j]->{Start} && $dates[$i]->{End} <= $dates[$j]->{End} || $dates[$j]->{Start} >= $dates[$i]->{Start} && $dates[$j]->{End} <= $dates[$i]->{End}) { push @colitions, [{%{$dates[$i]}}, {%{$dates[$j]}}]; } } } print "Anzahl: ", scalar @colitions, "\n", print Dumper(\@colitions); exit(0); _ _DATA_ _ 0800&&0900&&Eintrag1 0930&&1015&&Eintrag2 1000&&1100&&Eintrag3 1045&&1145&&Eintrag4 0800&&0830&&Eintrag5 0930&&1050&&Eintrag6 1051&&1141&&Eintrag7 1045&&1145&&Eintrag8