#!/usr/bin/perl use strict; use warnings; use Data::Dumper; sub array_utils { use Array::Utils qw(:all); my @compare = (); my @account = qw( 96329XY 7776fc 334457yg 2233oop 000001 8877666b); my @file = qw(8877666b.txt 2233oop.txt 334457yg.txt 7776fc.txt 96329XY_K.txt); foreach my $sample (@file) { $sample =~ s/(.+)\.[^.]+$/$1/; push @compare,$sample; } # symmetric difference return my @diff = array_diff(@account, @compare); # intersection #return my @isect = intersect(@account, @compare); # unique union #return my @unique = unique(@account, @compare); # check if arrays contain same members if ( !array_diff(@account, @compare) ) { return "Arrays contain same members!"; } # get items from array @account that are not in array @compare #return my @minus = array_minus( @account , @compare ); } my @final = array_utils(); print Dumper(\@final); __END__ $VAR1 = [ '96329XY', '000001', '96329XY_K' ];