You're welcome, Makaveli. And I hate to add to an already too-long thread, but, I don't like posting a solution that will sometimes give incorrect results. So, I offer my new solution, which should handle all cases including suid and sticky bits. And special thanks to Perderabo for his excellent contribution.
#!/bin/ksh
ls -ld $* | awk 'BEGIN {
v["r1"]=400; v["w2"]=200; v["x3"]=100; v["s3"]=4100; v["S3"]=4000
v["r4"]=40 ; v["w5"]=20 ; v["x6"]=10 ; v["s6"]=2010; v["S6"]=2000
v["r7"]=4 ; v["w8"]=2 ; v["x9"]=1 ; v["t9"]=1001; v["T9"]=1000}
{val=0
for (i=1;i<=9;i++) val=val+v[substr($0,i+1,1)i]
printf "%4d %s\n",val,$NF}'
perms.sh jb*
666 jbdisks
755 jbexp
666 jbfilea
2666 jbll
755 jbtest1