Hey group,
Hope everyone had a great weekend. I was working on a perl wrapper
around the lsof command. On the AIX machines I work on the version of
lsof does not display the file name, only the node. So I thought I
would write a small wrapper around lsof that does a find on the inode
(with the volume specifically given as a command line option.)
Anyways, I used find2perl to generate the the relative find code,
but I can't seem to find a way to pass a variable to it.
here is what I mean:
--------------------<relevant
code>------------------------------------
use vars qw/*name *dir *prune/;
*name = *File::Find::name;
*dir = *File::Find::dir;
*prune = *File::Find::prune;
open L, "$lsof $volume |" or die "Cannot open $lsof:$!\n";
while (<L>){
if (/^COMMAND/){
print "COMMAND\tPID\tUSER\tINODE\t\tFILE\n";
}else{
my ($command, $pid, $owner, $node) = (split /\s+/)
[0,1,2,7];
print "$command\t$pid\t$owner\t[$node]\t\t\n";
my $file = find(\&wanted($node), "$mount");
}
}
close (L);
sub wanted {
my ($node) = @_;
my ($dev,$ino,$mode,$nlink,$uid,$gid);
(($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) && -f _ && ($ino
== $node);
return $name;
}
--------------------</relevant
code>------------------------------------
I am not sure what I am missing. Any help would be appreciated.
Thanks,
Sunckell
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/