Well it's not really that easy...
Here's a more thoroughly tested version...
perl -anF -e '@CF= (undef, oct($F[1]), scalar getpwnam($F[2]), scalar
getgrnam($F[3])); chmod ($CF[1], $F[0]); chown ($CF[2], $CF[3], $F[0])
;' permissions.dat
The undef is so that CF & F have the same values in the same location.
Here's a perl one liner to process permissions.dat.
perl -anF -e 'chown ($F[2], $F[3], $F[0]); chmod (oct($F[1]), $F[0]);'
If you're in to more error checking setperms.sh is more elaborate but
I didn't see that until after writing this. setperms.sh ignores field
5 which is called special (reserved for future use or something...)
Comments are welcome.