#!/usr/bin/perl use strict; use warnings; my @array1 = (1,2,3); my @array2 = (1,2,3,4,5); my %hash; my %hash2; @hash{@array1} = @array1; @hash2{@array2} = @array2; # get initial length my $len = keys %hash; # remove the unwanted "value" my $old = delete $hash{2}; my $old2 = delete $hash2{2}; # insert a new one foreach my $x (@array2) { next if ($x == $old); $hash{$x} = undef; last if (keys %hash == $len); } @array1 = keys %hash; foreach my $yy (@array1){ print "##".$array1$[yy]."##\n"; }