1) How to open the directory & read all the files
2) In each file, remove duplicate lines from a file and keep it in same path/file or different path/file
4) How to create time-stamp in Perl
3) How to create a log file and log the changes
Mention the corresponding path where you want to copy
e.g., If you want to remove duplicated line and copy in the same file
my $input_dir = "/nfs/fm/disks/my_files";
my $output_dir = "/nfs/fm/disks/my_files";
my $log_dir = "/nfs/fm/disks/my_files";
e.g., If you want to copy the output of the files in different locations
my $input_dir = "/nfs/fm/disks/input_dir";
my $output_dir = "/nfs/fm/disks/output_dir";
my $log_dir = "/nfs/fm/disks/log_fir";
remove_duplicates.pl
#!/usr/bin/perl use strict; use warnings; my $input_dir = "/nfs/fm/disks/my_files"; my $output_dir = "/nfs/fm/disks/my_files"; my $log_dir = "/nfs/fm/disks/my_files"; my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $sec = sprintf("%02d",$sec); $min = sprintf("%02d",$min); $hour = sprintf("%02d",$hour); $mday = sprintf("%02d", $mday); $mon = sprintf("%02d", $mon+1); $year = sprintf("%04d", $year+1900); my $output_tag = $mday .'_'. $mon .'_'. $year .'_'. $hour .'_'. $min; opendir(IN_DIR, $input_dir) or die $!; opendir(OUT_DIR, $output_dir) or die $!; opendir(LOG_DIR, $log_dir) or die $!; open (LOG_FILE, "> $log_dir/remove_duplicate_lines.log"); print LOG_FILE "------------- START ------------ \n"; my (@invalid_list_files, %file_without_dup ); while (my $file = readdir(IN_DIR)) { next if $file =~ /^\./; print LOG_FILE "\n Folder Path : " , "$input_dir/$file"; unless (-f "$input_dir/$file") { print LOG_FILE "\n Not a File : " . $file; next; } print LOG_FILE "\n File Name : " . $file . "\n"; #Reading the File open(IN_FILE, "<$file") || die "\n Cant open file for reading: " . $file; my @lines =close(IN_FILE); my @newlines; foreach my $each_line (@lines) { if (not defined $file_without_dup{$each_line}) { push(@newlines, $each_line); } $file_without_dup{$each_line} = 1; } #Writing into Output Files open(OUT_FILE, ">$output_dir/$file") || die "-W- Cant open file for writing: " . "$output_dir/$file"; print OUT_FILE @newlines; close(OUT_FILE); } close (LOG_FILE); closedir(IN_DIR); closedir(OUT_DIR); closedir(LOG_DIR); 1;
You may also wish to read Object Oriented Concepts in Python as mentioned :
Python Class and Object Example
Inheritance in Python
Packages in Python
Exceptions in Python
No comments:
Post a Comment