http://www.perlmonks.org?node_id=1064604


in reply to why does sort with uniq not work together

The + is the unary plus operator. It does nothing, but can be used to disambiguate a first argument. For example:

print (1 + 2) . "\n";

You might expect that to be roughly the same as print "3\n", but it's actually more like my $tmp = print 3; $tmp . "\n". The line break doesn't get printed; it gets concatenated to the return value of the print function. That is, it's parsed like:

(print(1+1)) . "\n";

The unary plus helps Perl notice that something is an argument to the preceding function:

print +(1 + 2) . "\n";

Unary plus can also be useful in disambiguating +{} (a hashref) from { } (an empty block of code).

See Symbolic Unary Operators in perlop.

use Moops; class Cow :rw { has name => (default => 'Ermintrude') }; say Cow->new->name