Usage of typeglob filehandle is not recommended because if you don't pay attention, this can lead to several issues. E.g: If you're creating a recursive function which reuses the same typeglob, you'll get some warnings when you try to close the filehandle unless you create a temporal-limited package-based glob. Lexical variables are scoped to the block in which they are defined while the typeglob scope is for the full package in which it is defined.
To resume:
If you want stay with typeglob filehandle make sure to create a temporal-limited package-based glob:
...
local *FH;
open FH, '<', $filepath or die(sprintf('Could not open %s: %s', $filepath, $!));
...
else, use a lexical variable
...
open my $fh, '<', $filepath or die(sprintf('Could not open %s: %s', $filepath, $!));
...