Secondo perldoc perlsub:Qual è il motivo per utilizzare le chiamate di subroutine tra parentesi in Perl?
Il & è opzionale in Perl moderno, come lo sono parentesi se la subroutine è stata predichiarata.
Ho notato che un sacco di volte, la gente usa il fatto che è possibile omettere la parentesi quando si chiama subroutine Perl (per esempio, in modo casuale citando un recente SO rispondere):
open my $fin, '<', $file;
è altrettanto valida come
open(my $fin, '<', $file);
Quali sono le principali (idealmente, tecnici) motivi per utilizzare la seconda versione (tra parentesi-meno)?
perldoc perlsyn non dice nulla sull'argomento oltre a menzionare nuovamente l'opzione.
Per me, usare sempre la parentesi è principalmente una scelta stilistica a causa delle mie origini come sviluppatore C; ma Mi piacerebbe sapere se mi manca qualcosa su non usare la sintassi opzionale senza parentesi come sviluppatore Perl.
P.S. Conosco bene i motivi per preferire la versione con parentesi - ad es. the issues with indirect object notation o requirement to declare non-builtins before they are used without parenthesis o problemi con precedenza visavi or
vs ||
. Mi interessa l'opposto.
P.P.S. Non sono molto interessato alle risposte affermando semplicemente "è meglio lo stile"/"più leggibile" senza studi che supportino l'opinione. Sono interessato a motivi tecnici per preferire l'omissione di parentesi, oppure backup preferenze di differenza stilistica (per favore non confondere "backup" con "appello all'autorità" o errori "argumentum ad populum". Uno studio che mostra il miglioramento della velocità o della comprensione di il codice è la prova. "Tutti nella comunità di Perl sono d'accordo" o "Damien Conway suggerisce questo" senza spiegare come Damien non lo supporta).
Non uso il paren per distinguere i built-in. Questa è l'unica regola che seguo. – ugexe
@ugexe: c'è una ragione importante per distinguere i built-in? O solo abitudine? – DVK
Il suggerimento di Conway sembra fornire ragioni interamente estetiche/stilistiche. Dato che 'CodeLayout :: ProhibitParensWithBuiltins' è una delle regole incorporate di' Perl :: Critic', molti programmatori probabilmente trovano più facile da rispettare che modificare il loro '.perlcriticrc'. Scegli l'opzione più adatta a te .... – tjd