in reply to Array lookup
use strict; use warnings; #USING A HASH TO CHECK IF ALL OF ARRAY2 IS IN ARRAY1 my @array1 = (1,2,3,4,5); my @array2 = (1,3,4,5); my %hash; @hash{@array1} = (); foreach (@array2) { unless ( exists $hash{$_} ) { die "Array1 does not contain $_\n" } } print "Yup they are all there\n";
update: (striked out an irrelevent point)Another way to do it is with Quantum::Superpositions :
use Quantum::Superpositions; use strict; use warnings; my @array1 = (1,2,3,4,5,6,7,8,9,10); my @array2 = (2,6,7,8,5); foreach ( @array2 ) { die "$_ not found in ARRAY1" unless $_ == any(@array1); } print "found all of them\n";
update2 I realize I have it backwords and am checking that all of @array2 is in @array1, but if you switch the two (type @array1 where I had @array2, and vice versa) in the code above (and below), you will have what you want. Also, I really like Abigail-II's solution below. Anyhow here is one more way to do it with Quantum::Superpositions:
use strict; use warnings; my @array1 = (1,2,3,4,5,6,7,8,9,10); my @array2 = (10,9,8,7,6,5,4,3); die "Nope not all there\n" if ( any(@array2) != all(@array1) ); print "found all of them\n";
-enlil
|
|---|