È preferibile utilizzare $filehandler
perché i filehandle saranno con validità lessicale. Significa che non accidentalmente saboterai o entrerai in conflitto con un altro filehandle. Riceverai un avviso se proverai a dichiarare un'altra variabile con lo stesso nome. Questo formato è stato introdotto in Perl 5.6, quindi è un formato più recente.
I filehandle di Bareword sono nomi globali. Potresti sovrascrivere un filehandle esistente con lo stesso nome senza saperlo. Potrebbe causare confusione se si ha una costante o subroutine con lo stesso nome. E probabilmente non riceverai alcun avvertimento se hai uno di questi scontri.
btw, questo è uno degli elementi elencati in Perl Best Practices di Damian Conway. È anche meglio usare la forma 3-arg di open: open my $fh, '<', $file
.