Your description doesn't say what values $filetype can hold, so I'll guess it will just be one value meaning 'files' and one meaning 'directories'. An example showing how your script will be run with some sample arguments would be useful if I still don't understand.
An easy way to implement this would be to search files by default, unless '-d' was specified. That keeps the conditional to one line. If not, you'll need a larger conditional block, which would probably be in a small subroutine that checks the value of filetest. It would need to have the value of the special filehandle '_' passed into it as a parameter.
Here is the easy way that assumes you want files if $filetype is not '-d':
Code:
...
(($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
( ( $filetype eq '-d' ) ? -d _ : -f _ ) && # Search for regular files by default
(int(-M _) < $saveday) &&
...
You might also look into Getopt::Std (
http://perldoc.perl.org/Getopt/Std.html) for argument processing (assuming this isn't part of some larger program).