The $_ inside the grep{} command, and the $_ you might be
using otherwise are two different variables, so don't
worry about jumping through hoops to elininate it.
This is because $_ is declared to be local to the grep
BLOCK.
@sheets = grep{/\.xls$/}readdir(DIR);
This uses a regexp instead, so you don't even see $_.