hi Mihir Kamdar, Please the following highlighted.
I have tested it. this excatly does what you need. configure the parent_path,child_path and out_path to your corresponding paths. _____________________ BEGIN use strict; use File::Path; use File::Copy; use warnings; my $parent_path="C:/parent"; my $child_path="C:/child"; my $out_path="C:/output"; my @parent_files=<$parent_path/*>; ######### THIS SECTION ACTS AS the Touch Command Check the Files in Parent Directory and Created the zero bye files in the Child directory############# foreach my $file (@parent_files) { my @arr=$file=~ /(\w+\.\w+)$/; if (-f "$child_path/$arr[0]" ) { } else { open my $W_H, '>', "$child_path/$arr[0]" || die "Could not Create the file $child_path/$arr[0]\n"; close $W_H; } } ###################################################################################################################################### ############################## this section Checks the files in the child directory, Takes the same file from the parent directory removes duplicates from the file and creates the file in output directory #####################################################################################3 my @child_files=<$child_path/*>; foreach my $file (@child_files) { my @arr=$file=~ /(\w+\.\w+)$/; my %uniques; open my $R_H, '<', "$parent_path/$arr[0]"; my @file_content=<$R_H>; close $R_H; foreach my $line (@file_content) { $uniques{$line}++; } open my $W_H, '>', "$out_path/$arr[0]"; for(keys(%uniques)) { print $W_H "$_\n"; } close $W_H; } ###################################################################################################################################### _________________________________ END Regards, Siva