Hi, I have a requirement. There are files in the parent directory and they are touched in the child directory. So in child directory there are 0 byte files having the same name as the ones in the parent directory. I need to read files in the child directory, and for each file present in the child directory, I need to take that file from the parent directory, process that file(remove duplicate lines from that file), and then write the output for each of the input files in the output directory.
I have written the code as below but it gives 0 byte files as output. Please suggest what is wrong with the below code. I have a fear that instead of processing files from parent directory, it is processing files from the child directory. I am a newbie at perl. So i might have made silly mistakes. Request you to correct them. #!/usr/bin/perl my $child_path = '/home/user71/RangerDatasource/Customization/TelekomMalaysia/Scripts/Tests/cprogs/files/child' ; my $parent_path = '/home/user71/RangerDatasource/Customization/TelekomMalaysia/Scripts/Tests/cprogs/files' ; my $write_path = '/home/user71/RangerDatasource/Customization/TelekomMalaysia/Scripts/Tests/cprogs/files/output' ; my $line; my %hash; my @file; my $key ; my $value ; while () { opendir my $dh, $child_path or die $!; while (my $file = readdir $dh) { my $fname = "$child_path/$file"; next unless -f $fname; unless (exists $times{$file}){ opendir my $dh1,$parent_path or die $!; while (my $file = readdir $dh1) { while ($line=readline($file)) { my @cdr=split (/,/, $line) ; $hash{$cdr[2],$cdr[3],$cdr[6],$cdr[7]}=$line; #Add some more cdr key fields if u want. } close $file ; } closedir $dh1 ; open (my $OUT_FILE,">","$write_path/$file.out") or die $!; while (($key, $value) = each %hash) { print $OUT_FILE $value; } close $OUT_FILE; } unlink("$parent_path/$file") ; unlink("$child_path/$file") ; } closedir $dh; }