2013-05-17 12 views
8

Sembra che perl tratti {+0,0} come BLOCCO e {0,0} un EXPR Ma perché? È una disposizione speciale?in perl (v5.14.2), perché la mappa {+0,0}() è corretta ma la mappa {0,0}() no?

Se voglio assicurarmi che {} sia un hash anonimo, qualsiasi cosa contenga le parentesi, devo mettere un `+ 'prima di {}?

grazie.

+2

'{; ...} 'è più idiomatico (e un suggerimento migliore per il lettore) per forzare l'analisi come blocco. '+' viene in genere utilizzato per l'opposto ('+ {...}' per forzare l'analisi come un EXPR). – ikegami

risposta

3

Perché? Perché potrebbe essere l'uno e l'analizzatore non sembra abbastanza avanti per sapere con certezza il tempo che deve decidere.

Devi mettere un '+' prima di {} per essere trattato come un costruttore di hash anonimo indipendentemente dal contenuto di {}? Sì.

+3

È interessante però che 'perl -MO = Deparse -e" map {+0,0} 1..2 "' restituisce qualcosa che non è possibile utilizzare nello script originale. –

Problemi correlati