È meglio usare $ filehandler o FILEHANDLER?

3

Sembra che FILEHANDLER sia usato più comunemente come convenzione per la denominazione dei gestori di $ filehandler. Ma può dare un errore bareword se si dimentica di usare * FILEHANDLER in alcune costruzioni.

Quali sono i vantaggi e gli svantaggi dei MANEGGIATORI e dei gestori $?

Quale convenzione di denominazione è una pratica migliore e perché?

    
posta ludwika 22.12.2012 - 22:36
fonte

2 risposte

12

È 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 .

    
risposta data 23.12.2012 - 08:48
fonte
0

Presumo che tu stia parlando dell'utilizzo di un oggetto FileHandle rispetto a uno spazio dei nomi / bareword o glob?

  1. L'uso di FileHandle ti dà un oggetto. Se il tuo codice circostante è OO, ha senso. Rende anche più leggibile quando è in ambito e come viene utilizzato. Vedi IO :: Handle

  2. Perldoc link

  3. Sono d'accordo con stevenl, < >

  4. Se utilizzi -w o use strict; , ci sono problemi con BAREWORDS. È più sicuro avere un riferimento.

risposta data 23.01.2014 - 00:59
fonte

Leggi altre domande sui tag