#! /usr/bin/perl if (-e $ARGV[0]) { $sep=" _ "; $cen="19"; @mnth=("Jan","Feb","Mar","Apr","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); @wks=("Mon","Tue","Wed","Thu","Fri","Sat","Sun"); sub prTime { @t=localtime($_[0]); ($t[0]>=10)||($t[0]="0".$t[0]); ($t[1]>=10)||($t[1]="0".$t[1]); ($t[2]>=10)||($t[2]="0".$t[2]); ($t[3]>=10)||($t[3]="0".$t[3]); (($t[2]>=0)&&($t[2]<12)&&($mer="am"))||($mer="pm"); print "$wks[$t[6]-1] $mnth[$t[4]-1] $t[3] $t[2]:$t[1]:$t[0] $mer $cen$t[5]\n"; } @m=stat($ARGV[0]); print "Filename $sep $ARGV[0]\n"; print "Filesys device number$sep $m[0]\n"; print "File's inode number $sep $m[1]\n"; (($m[2] & 0100000) && ($fmd .= "-"))|| (($m[2] & 0040000) && ($fmd .= "d"))|| (($m[2] & 0120000) && ($fmd .= "l"))|| (($m[2] & 0010000) && ($fmd .= "p"))|| (($m[2] & 0140000) && ($fmd .= "s"))|| (($m[2] & 0020000) && ($fmd .= "c"))|| (($m[2] & 0060000) && ($fmd .= "b"))|| ($fmd .= "-"); (($m[2] & 00400) && ($fmd .= "r")) || ($fmd .= "-"); (($m[2] & 00200) && ($fmd .= "w")) || ($fmd .= "-"); (($m[2] & 00100) && ($fmd .= "x")) || ($fmd .= "-"); (($m[2] & 00040) && ($fmd .= "r")) || ($fmd .= "-"); (($m[2] & 00020) && ($fmd .= "w")) || ($fmd .= "-"); (($m[2] & 00010) && ($fmd .= "x")) || ($fmd .= "-"); (($m[2] & 00004) && ($fmd .= "r")) || ($fmd .= "-"); (($m[2] & 00002) && ($fmd .= "w")) || ($fmd .= "-"); (($m[2] & 00001) && ($fmd .= "x")) || ($fmd .= "-"); print "mode / permissions $sep $fmd\n"; $owner=getpwuid($m[4]); $group=getgrgid($m[5]); print "Owner $sep $owner (uid = $m[4])\n"; print "Group $sep $group (gid = $m[5])\n"; print "Filesize (bytes) $sep $m[7]\n"; print "Filetype (bin / Text)$sep "; ((-T _)&&(print "Text\n"))|| ((-B _)&&(print "Binary\n"))|| (print "Cannot determine\n"); print "Blocks allocated $sep $m[12]\n"; print "Access Time $sep "; prTime($m[8]); print "Modify Time $sep "; prTime($m[9]); print "Inode Change Time $sep "; prTime($m[10]); $current_time=localtime; print "Current Time $sep $current_time\n"; } else { print "$ARGV[0] does not exist\n"; }