foreach my $ts ( @{$test} ) { foreach my $sc (@{$source} ) { if ( $ts ne $sc ) # <- You will fail here { print "FALSE\n"; #### 1. loop: 'A' ne 'A' -> okay. They are equal 2. loop: 'A' ne 'B' -> TRUE So fail...