> Hi all 
> 
> I've this Perl script to read all  files in a directory and 
> if it finds a file with a certain then rename  the file to 
> header, but is doesn't search the right directory and doesn't 
> even look for the HPAY header.
> 

What format are these "headers" in in the file?

Assuming the files are relatively small text files (and to simplify the example)
I'd do:
[* untested by the way *]
use warnings;
use strict;
use File::Slurp;

for(read_dir($dir)) {
        my $filegust = read_file($dir$_);
        my ($hpay) = $fileguts =~ m/HPAY=(\w+)/;
        if($hpay) {
                write_file("$dir$hpay", $fileguts) or die $!;
                unlink("$dir$_") or die $!;
        }
}
- This will overwrite files already called $dir$hpay which may or may not be what you 
want.
- There's probably a better way to move or rename the file but hey it works.
- no system() command to make it platform independent, easier to undertsand, etc etc 
is good

HTH

Dmuey

> Ops  forgot to include the script.
> 
> #!/usr/bin/perl -w
> 
> use strict;
> 
> my $dir = "/interfaces/tdbank/test/";
> 
> opendir DIR, $dir;
> 
> my @files = readdir DIR;
> 
> my %hash = ('HPAY' => 'file1' ,
> 
>             'HRET' => 'file2');
> 
>  
> 
> for (my $i=0; $i<scalar(@files); $i++) {
> 
>   open FILE,"$files[$i]" || die "Unable to open file 
> $files[$i] because $!\n"; 
>   my $header = <FILE>;
> 
>   print "header -->" , $header, "\n";
> 
>   close FILE;
> 
>   my $command = "mv $files[$i] $hash{$header}";
> 
>   print "command -->", $command, "\n";
> 
>   system $command;
> 
> }
> 
> 
> And I get the following Errors:
>  
> 
> 
>             
> Use of uninitialized value in concatenation (.) or string at 
> ./process_f iles.sh line 14.
> 
> command -->mv ..
> 
> Usage: mv [-i | -f]  [--] src target
> 
>    or: mv [-i | -f]  [--] src1 ... srcN directory
> 
> readline() on closed filehandle FILE at ./process_files.sh 
> line 11.     
> Use of uninitialized value in print at ./process_files.sh 
> line 12.      
> header -->
> 
> Use of uninitialized value in hash element at 
> ./process_files.sh line 14 .
> 
> Use of uninitialized value in concatenation (.) or string at 
> ./process_files.sh line 14.
> 
> command -->mv file1
> 
> Usage: mv [-i | -f]  [--] src target
> 
>    or: mv [-i | -f]  [--] src1 ... srcN directory
> 
> readline() on closed filehandle FILE at ./process_files.sh 
> line 11.     
> Use of uninitialized value in print at ./process_files.sh 
> line 12.      
> header -->
> 
> Use of uninitialized value in hash element at 
> ./process_files.sh line 14 .
> 
> Use of uninitialized value in concatenation (.) or string at 
> ./process_files.sh line 14.
> 
> command -->mv file2
> 
> Usage: mv [-i | -f]  [--] src target
> 
>    or: mv [-i | -f]  [--] src1 ... srcN directory
> 
> etrprodftp /usr/local/sbin
> 
> 
> 
> Any help would be great..
> 
> 
> James Parsons.
> 
> 
> 
> -- 
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to