japhy, a fellow saint has written a funky module called File::chmod which might be worth looking at.
You will be specifically interested in the function getchmod() which does exactly what it 'says on the box' - i.e. returns a list of the current mode of each file you pass to it. You might also be interested in the functions that returns symbolic permisson modes and only "ls" permisson modes.