Il unario-plus operatore restituisce semplicemente il suo operando invariato. Aggiungerne uno non cambia nemmeno il contesto.
Nell'esempio che hai fornito, è completamente inutile. Ma ci sono situazioni in cui è utile rendere il prossimo token qualcosa che è innegabilmente un operatore.
Ad esempio, map
ha due sintassi.
map EXPR, LIST
e
map BLOCK LIST
Un blocco inizia con {
, ma così può un'espressione. Ad esempio, { }
può essere un blocco o un costruttore di hash.
Quindi, come può map
indicare la differenza? Suppone. Il che significa che a volte è sbagliato.
Un'occasione in cui è congetture sbagliato è teh seguente:
map { $_ => 1 }, @list
Puoi prod in a indovinare correttamente utilizzando +
o ;
.
map {; ... # BLOCK
map +{ ... # EXPR
Quindi, in questo caso, è possibile utilizzare
map +{ foo => $_ }, @list
Ma io preferisco:
map({ foo => $_ }, @list)
Un altro esempio è quando si omettono le parentesi intorno argomenti, e la prima l'espressione argomento inizia con un paren.
print ($x+$y)*2; # Same as: 2 * print($x+$y)
Può essere fissato con
print +($x+$y)*2;
Ma perché mucchio su un hack solo per evitare parentesi? Io preferisco
print(($x+$y)*2);
controllo alla fine dei documenti anche per qualche informazione in più: http://perldoc.perl.org/functions/map.html – squiguy