Anthony Kernan wrote:
> 
> Here is the complete script...
> 
> #!/usr/bin/perl -w
> use strict;
> use File::Find;
> my $dir = '/usr/local/etc/mrtg';
> my $ext = '.pid';
> my (@dirstruct);
> my $mypid;
> 
> find(\&wanted,$dir);
> 
> foreach my $afile (@dirstruct) {
>     $mypid = system("cat $afile");
>     chop($mypid);
>     print "Killing instance...";
>     #print "$mypid";
>     print $mypid;
>     #system("kill $mypid");
>     }
> exit;
> 
> sub wanted {
>   my $entry = "$File::Find::name" if -e;

This is a useless test because the file system wouldn't return the name
of a file if it didn't exist.


>   push @dirstruct, $entry if (($entry ne '')

AFAIK a file system entry can not have zero length.


> && (( m/$ext$/)

Your regular expression doesn't work the way you intended because the
variable $ext contains the . meta-character.


> and (substr $entry, 0, -4))); #This will only work with *.pid
>  }


Try this instead:

#!/usr/bin/perl -w
use strict;
use File::Find;
my $dir = '/usr/local/etc/mrtg';
my $ext = qr/\.pid$/;
my @dirstruct;

find( \&wanted, $dir );

foreach my $afile ( @dirstruct ) {
    chomp( my $mypid = qx/head -1 $afile/ );
    print "Killing instance...$mypid\n";
    kill 'TERM', $mypid;  # use 'KILL' to force it
    }
exit 0;

sub wanted {
    return unless /$ext/;
    push @dirstruct, $File::Find::name if length substr $_, 0, -4;
    }






John
-- 
use Perl;
program
fulfillment

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

Reply via email to