Hi, In the script below, I have an array @datas with its elements consisting of numbers like this :-
my @datas = ( '1 2 3', '1 2 4', '1 2 7', '1 2 8', '1 2 9', '1 6 7', '1 7 12', '2 6 7', '4 5 10', '4 5 15' ); Out of the above list, I wish to generate a seperate array so that among their elements, there should not be any 2 numbers that can match and so the output should be :- 1 2 3 1 6 7 4 5 10 I therefore have written the script below and have tested the script to be working. What is the easier way to write this script? Thanks ##### start of script ############## use strict; use warnings; my @datas = ( '1 2 3', '1 2 4', '1 2 7', '1 2 8', '1 2 9', '1 6 7', '1 7 12', '2 6 7', '4 5 10', '4 5 15' ); my $numbers_wanted = 2; my @datawanted = (); my $marker = scalar @datas; my $splice_counter = 0; my @datas_iterator = (); while ($marker) { $splice_counter = 0; push @datawanted, splice @datas, 0, 1; my @comparator1 = split / /, $datawanted[-1]; my $temp_datas_iterator = scalar @datas - 1; foreach ( 0 .. $temp_datas_iterator ) { my $counter = 0; my @comparator2 = split / /, $datas[ $_ - $splice_counter ]; foreach (@comparator2) { my $a = $_; foreach (@comparator1) { if ( $a == $_ ) { $counter++; } } } if ( $counter >= $numbers_wanted ) { splice @datas, $_ - $splice_counter, 1; $splice_counter++; } } $marker = scalar @datas; } foreach (@datawanted) { print "$_\n"; }