#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @index=(); my $pos=0; while(my $line=) { chomp($line); next unless($line); (my $compare=$line)=~s/^.+?\s+//; $compare=~s/\s+$//; push(@index,[$pos,$line,[split(/\s+/,$compare)]]); $pos++; } for my $test (@index) { print "TEST: $test->[1]\n"; for my $comp (@index) { # mindestens ein Zahl next unless( grep{$_ ne '-'}@{$comp->[2]} ); # nicht die selbe Zeile next if($test->[0] == $comp->[0]); my $cnt=0; for my $p (0..$#{$test->[2]}) { my $sval=$test->[2]->[$p]; my $dval=$comp->[2]->[$p]; # verkürzte Bedingung :-) $cnt++ if($dval eq $sval || $dval eq '-'); } print " SUBSET: $comp->[1]\n" if($cnt==@{$test->[2]}) } } __DATA__ row18 - 0 0 1 0 0 - - - 0 0 - - - - - - - - - - - - - - - - row19 - 0 0 0 - - - - 1 0 0 - - - - - - - - - - - - - - - - row20 - 0 0 - - - - 1 - 0 0 - - - - - - - - - - - - - - - - row21 - 0 0 - - - - - - 0 0 - - - - 1 0 0 - - - - - - - - - row22 - 0 0 - - - - - - 0 0 - - - - 0 - - - 1 - - - - - - - row23 - 0 0 - - - - - - 0 0 - - - - - - - - - 1 - - - - - - row24 - 0 0 - - - - - - 0 0 - - - - - - - - - - 1 0 0 - - - row25 - 0 0 - - - - - - 0 0 - - - - - - - - - - 0 - - - 1 - row26 - 0 0 - - - - - - 0 0 - - - - - - - - - - - - - - - 1 row27 - 0 0 - - - - - - 1 0 0 - - - - - - - - - - - - - - - row28 - 0 0 - - - - - - 0 - - - - 1 - - - - - - - - - - - - row29 - 0 0 - - - - - - - - - 1 - - - - - - - - - - - - - - row30 1 0 0 - 1 - - - - 0 0 - - - - - - 1 - - - - - - - - - row31 1 0 0 - 1 - - - - 0 0 - - - - - - - - - - - 1 - - - - row32 1 0 0 - 1 - - - - 0 0 - - - - - - 1 - - - - 1 - - - - row33 1 0 0 - - - 1 - - 0 0 - - - - - - - - - - - - - - - - row34 1 0 0 - - - - - - 0 0 - - - - - - - 1 - - - - - - - - row35 1 0 0 - - - - - - 0 0 - - - - - - - - - - - - - 1 - - row36 1 0 0 - - - - - - 0 0 - - - - - - 1 - - - - 1 - - - - row37 1 0 0 - 1 - - - - - 1 - - - - - - 1 - - - - - - - - - row38 1 0 0 - 1 - - - - - 1 - - - - - - - - - - - 1 - - - - row39 1 0 0 - 1 - - - - - 1 - - - - - - 1 - - - - 1 - - - - row40 1 0 0 - - - 1 - - - 1 - - - - - - - - - - - - - - - - row41 1 0 0 - - - - - - - 1 - - - - - - - 1 - - - - - - - - row42 1 0 0 - - - - - - - 1 - - - - - - - - - - - - - 1 - - row43 1 0 0 - - - - - - - 1 - - - - - - 1 - - - - 1 - - - - row44 1 0 0 - - - - - - - - 1 - 1 - - - - - - - - - - - - - row45 - 1 - - - - - - - 1 0 0 - - - - - - - - - - - - - - - row46 - 1 - - - - - - - 0 - - - - 1 - - - - - - - - - - - - row47 - 1 - - - - - - - - - - 1 - - - - - - - - - - - - - - row48 - - 1 - - - - - - 1 0 0 - - - - - - - - - - - - - - - row49 - - 1 - - - - - - 0 - - - - 1 - - - - - - - - - - - - row50 - - 1 - - - - - - - - - 1 - - - - - - - - - - - - - - row51 - 1 0 - - - - - - - - - 0 - - - - - - - - - - - - - - row52 - 0 1 - - - - - - - - - 0 - - - - - - - - - - - - - - row53 - 1 0 - - - - - - - - - - - 0 - - - - - - - - - - - - row54 - 0 1 - - - - - - - - - - - 0 - - - - - - - - - - - - row55 - 1 0 - - - - - - 0 0 - - - - - - - - - - - - - - - - row56 - 0 1 - - - - - - 0 0 - - - - - - - - - - - - - - - -