#!/usr/bin/perl use strict; sub compare ($$) { my ($a,$b) = @_; my $ok = 0; for (my $i=0; $i < scalar(@{$a}); $i++) { if ( @{$a}[$i] eq @{$b}[$i] && @{$a}[$i] ne "_" ) { #compatible... $ok=1; } elsif (@{$a}[$i] ne @{$b}[$i] && (@{$a}[$i] ne "_" && @{$b}[$i] ne "_") ) { # totally not compatible return 0; } } $ok; } my @a1 = qw(_ 8 _ _ 3 _ _ 1 9); my @a2 = qw(2 _ 8 _ _ _ 7 _ _); my @a3 = qw(4 8 _ _ _ _ _ 7 _); my @a4 = qw(4 8 _ _ _ _ 7 _ _); print ( "1: " . compare(\@a1, \@a2) ."\n" ); print ( "2: " . compare(\@a1, \@a3) ."\n" ); print ( "3: " . compare(\@a1, \@a4) ."\n" );