my @formvars = ( # header fieldlen type [ 'Filename', 17, 'l' ], [ 'Owner', 10, 'l' ], [ 'GroupOwner', 10, 'l' ], [ 'Gecos', 29, 'l' ], [ 'LastModifiedDate', 21, 'l' ], [ 'Size Mb', 7, 'n' ], ); my %f = ( l => '<', r => '>', n => '#' ); my $hostname = qx(hostname); my $format_TOP = join ("\n", 'format STDOUT_TOP =', 'REPORT OF LARGE FILES on:', '@' . '<' x 12, '$hostname', '', 'Page @<<<<', '$%', join(' ', map { sprintf "%-$_->[1]s", $_->[0] } @formvars), join(' ', map { sprintf "%-$_->[1]s", '=' x length($_->[0]) } @formvars), '.' ); my $format_STDOUT = join("\n", 'format STDOUT =', join(' ', map { '@' . $f{$_->[2]} x ($_->[1] - 1) } @formvars), join(', ', map { "\$_[$_]" } 0..$#formvars), '.' ); eval $format_TOP; eval $format_STDOUT; opendir(D,'.'); my @files = grep(!/^\.\.?$/,readdir D); for(@files) { my @s = stat; if ($s[7] > 2**20) { # 1 MB my ($nm,$gc) = (getpwuid $s[4])[0,6]; my $group = (getgrgid $s[5])[0]; my $lmd = scalar localtime $s[9]; my $size = int ($s[7]/2**20); @_ = ( $_, $nm, $group, $gc, $lmd, $size ); write; } }; __END__