sub printattr{ my $file = shift; my @fileattr = split(//,(stat($file))[2]); print "["; for my $attr (@fileattr){ if($attr eq 0){ print "---"; } elsif($attr eq 1){ print "--x"; } elsif($attr eq 2){ print "-w-"; } elsif($attr eq 3){ print "-wx"; } elsif($attr eq 4){ print "r--"; } elsif($attr eq 5){ print "r-x"; } elsif($attr eq 6){ print "rw-"; } else{ print "rwx" } } print "]\n"; } #### use feature 'state'; sub printattr { state $attrs = [ qw( --- --x -w- -wx r-- r-x rw- rwx ) ]; state $maxi = $#$attrs; my ($file) = @_; print '['; print $attrs->[$_ < $maxi ? $_ : $maxi] for split //, (stat $file)[2]; print "]\n"; } #### sub print_attr { state $attrs = [ qw( --- --x -w- -wx r-- r-x rw- rwx rwx rwx) ]; my ($file) = @_; print '['; print $attrs->[$_] for split //, (stat $file)[2]; print "]\n"; }