use Module LIST is equivalent to:
BEGIN { require Module; import Module LIST; }
So one _big_ difference is that
use is executed at _compile_ time, whereas
require is only executed at "run" time.
Generally I would always use use even if you don't export any symbols.
One place where require would be preferred over use is when you want to include a module only when it really is needed. So you'll see code like:
if ($type eq "Excel file") {
require SpreadsheetReader::Excel;
my $parser = SpreadsheetReader::Excel->new();
...
}