#!/usr/bin/perl -w use strict; # If you want to delete the elements of array X which are duplicated in # array Y, try this (as long as your arrays are shorter than several hundreds # of thousands of items) use vars qw( $a $b ); # you should do this, see perldoc perlop my(@X) = qw/1 2 3 4 5 6 7 8 9 A B C D E F G/; my(@Y) = qw/1 3 5 7 9 D E F G/; my($cmp) = { 1=>{ map { $_ => $_ } @X }, 2=>{ map { $_ => $_ } @Y } }; map { delete $cmp->{1}{$_} if exists($cmp->{2}{$_}) } keys %{ $cmp->{1} }; @X = sort { uc($a) cmp uc($b) } keys %{ $cmp->{1} }; print(qq[@X\n]); # Note: this won't preserve the order of the items in @X. The items # will instead be sorted alphabetically. Do what you want with them # after that. Here we just print them out.