On 8/2/07, Mihir Kamdar <[EMAIL PROTECTED]> wrote: > > > > On 8/2/07, Mihir Kamdar <[EMAIL PROTECTED]> wrote: > > > > 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; > > } > > > > > a little correction in the above code: > #!/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 ; > my %times ; > 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; > } > > Hi, No replies from anybody. Can anybody plz help me with the above code?
Thanks, Mihir