diff options
Diffstat (limited to 'NetWare/t/NWModify-Exist.pl')
-rw-r--r-- | NetWare/t/NWModify-Exist.pl | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/NetWare/t/NWModify-Exist.pl b/NetWare/t/NWModify-Exist.pl new file mode 100644 index 0000000000..2b1d07beb8 --- /dev/null +++ b/NetWare/t/NWModify-Exist.pl @@ -0,0 +1,130 @@ + + +print "\nModifying the '.t' files...\n\n"; + +use File::Basename; +use File::Copy; + +## Change the below line to the folder you want to process +$DirName = "/perl/scripts/t"; + +$FilesTotal = 0; +$FilesRead = 0; +$FilesModified = 0; + +opendir(DIR, $DirName); +@Dirs = readdir(DIR); + +foreach $DirItem(@Dirs) +{ + $DirItem = $DirName."/".$DirItem; + push @DirNames, $DirItem; # All items under $DirName folder is copied into an array. +} + +foreach $FileName(@DirNames) +{ + if(-d $FileName) + { # If an item is a folder, then open it further. + + opendir(SUBDIR, $FileName); + @SubDirs = readdir(SUBDIR); + close(SUBDIR); + + foreach $SubFileName(@SubDirs) + { + if(-f $SubFileName) + { + &Process_File($SubFileName); # If file, process it. + } + else + { + $SubFileName = $FileName."/".$SubFileName; + push @DirNames, $SubFileName; # If sub-folder, push it into the array. + } + } + } + else + { + if(-f $FileName) + { + &Process_File($FileName); # If file, process it. + } + } +} + +close(DIR); + +print "\n\n\nTotal number of files present = $FilesTotal\n"; +print "Total number of '.t' files read = $FilesRead\n"; +print "Total number of '.t' files modified = $FilesModified\n\n"; + + + + +# Process the file. +sub Process_File +{ + local($FileToProcess) = @_; # File name. + local($Modified) = 0; + + if(!(-w $FileToProcess)) { + # If the file is a read-only file, then change its mode to read-write. + chmod(0777, $FileToProcess); + } + + ## For example: + ## If the value of $FileToProcess is '/perl/scripts/t/pragma/warnings.t', then + ## $dir = '/perl/scripts/t/pragma/' + ## $base = 'warnings' + ## $ext = '.t' + $dir = dirname($FileToProcess); # Get the folder name + $base = basename($FileToProcess); # Get the base name + ($base, $dir, $ext) = fileparse($FileToProcess, '\..*'); # Get the extension of the file passed. + + + # Do the processing only if the file has '.t' extension. + if($ext eq '.t') { + + open(FH, "+< $FileToProcess") or die "Unable to open the file, $FileToProcess for reading and writing.\n"; + @ARRAY = <FH>; # Get the contents of the file into an array. + + flock(FH, LOCK_EX); # Lock the file for safety purposes. + foreach $Line(@ARRAY) # Get each line of the file. + { + if($Line =~ m/\@INC = /) + { # If the line contains the string (@INC = ), then replace it + + # Replace "@INC = " with "unshift @INC, " + $Line =~ s/\@INC = /unshift \@INC, /; + + $Modified = 1; + } + + if($Line =~ m/push \@INC, /) + { # If the line contains the string (push @INC, ), then replace it + + # Replace "push @INC, " with "unshift @INC, " + $Line =~ s/push \@INC, /unshift \@INC, /; + + $Modified = 1; + } + } + + seek(FH, 0, 0); # Seek to the beginning. + print FH @ARRAY; # Write the changed array into the file. + flock(FH, LOCK_UN); # unlock the file. + close FH; # close the file. + + $FilesRead++; # One more file read. + + if($Modified) { + print "Modified the file, $FileToProcess\n"; + $Modified = 0; + + $FilesModified++; # One more file modified. + } + } + + $FilesTotal++; # One more file present. +} + |