Updating the code that I gave in your last post on this topic gives:
use strict;
use warnings;
my @array1 = (1,2,3,4);
my @array2 = (1,5,3,6,8,2,4);
my %hash;
use constant kReplace => 3;
@hash{@array1} = @array1;
my @only2 = grep {! exists $hash{$_}} @array2;
# remove the unwanted "value" from array 2
@array2 = grep {$_ != kReplace} @array2;
# Substitute a new value in array 1
for (@array1) {
next if $_ != kReplace;
$_ = shift @only2;
last; # Assuming there will only be one value to replace
}
print "array 1: @array1\n";
print "array 2: @array2\n";
which prints:
array 1: 1 2 5 4
array 2: 1 5 6 8 2 4
DWIM is Perl's answer to Gödel