#!/usr/bin/perl -w my @module_list; my %hash; my $module; my $tmp; my $perms; my @used_by; my $size; my $used; $perms = "dr-xr-xr-x 1 root root"; $lsmod="lsmod"; open(LSMOD, "cat /proc/modules |") || die "aieee, cant open lsmod"; sub list { while(){ # chomp; if(/(.*?)\s+(\d*)\s+(\d*)\s+/ || /(.*?)\s+(\d*)\s+(\d*)\s+.*\[(.*?)\]/ ){ if(!$4){ $tmp=""; } else{ $tmp=$4; } $size = $2; $module = $1; ($tmp) = /\[(.*?)\]/; if($tmp){ @used_by = split / /, $tmp; } else{ @used_by =(); } $hash{"$size Jan 05 1974 $module"} =[ @used_by ]; } } foreach $i (sort keys %hash) { print "dr-xr-xr-x 1 root root $i.o/\n"; foreach $fn (sort @{$hash{$i}}) { print "-r--r--r-- 1 root root $i.o/USED_BY/$fn\n"; } } } if($ARGV[0] eq "list"){ list(); @foo = ("echo listing things >> /tmp/test"); system(@foo); exit(0); }