Requirement :
1.read the content of the dir
2.seach for "prstat-Lvs" file
3.rename this file to *.txt (as this file doesn't have the file typeextension --raw file)
4.open this *.txt file & search for K&M
5.replace all K instance to *3 (manuplication)
6.replace all M instance to *4 (manuplication)
7.stored this calcuation in new file
8.rename this new file back to raw file
9.delete all the *.txt files
i have acheived this half a way (till step no 7) but the problem is, if i have more than 1 prstat-Lvs file, then code doesn't gives the correct raw files but instead it will give only 1 correct raw file & other one will be the replica of another.
Expand|Select|Wrap|Line Numbers
- my $dir = "C:\\Performance_svap\\INPUT_FILES\\*";
- my @file=glob("$dir");
- my $f;
- my $f2;
- my $oldfile;
- my @newfile;
- my @txtfile;
- foreach $f (@file){
- if ($f =~ /prstat-Lvs/){
- push (@prstat_Lvs,$f);
- foreach my $a (@prstat_Lvs){
- $oldfile = $a;
- my $newfile = $f . ".txt";
- rename($f,$newfile);
- push(@txtfile,$newfile);
- open (FH1,"$newfile") or die "Can't open $newfile : $!";
- $f2 = $a."new";
- $f2= $f2 . ".txt";
- open FH2, '>', $f2 or die "Couldn't open $f2: $!";
- while (<FH1>) {
- @a_list=split(' ', $_);
- $new_line=" ";
- foreach $entry (@a_list) {
- if($entry =~ /K$/) {
- chop($entry);
- $entry=$entry*3;
- }
- if($entry =~ /M$/) {
- chop($entry);
- $entry=$entry*4;
- }
- $new_line=$new_line." ".$entry;
- }
- print FH2 "$new_line\n";
- }
- }
- close FH1;
- push(@newfile,$f2);
- close FH2;
- foreach my $k(@newfile){
- rename($k,$a);
- }
- foreach my $j(@txtfile){
- unlink $j;
- }
- }
- }
Thanks,
Vijayarl