# Depending on your version, you may need: no warnings 'experimental::smartmatch'; # I have two arrays, @rows and @data # @data is a pre-loaded array of strings (~60k elements) # @rows is a much larger array of strings (~600k elements) foreach my $rawData (@rows) { if( $rawData ~~ @data ) { # don't do anything, already in array } else { push(@data,$rawData) } }