http://qs321.pair.com?node_id=735161


in reply to Re: Print all derefs and method calls in a directory (Friday golf)
in thread Print all derefs and method calls in a directory (Friday golf)

Since you're using 'say', you have to use '-E' instead of '-e'.

Note also that [+-]{2} is not equivalent to \+\+|-- as the former matches "-+" while the latter doesn't. Also, the original code will remove a leading "(--" from the line, while your code will not (it will either remove a leading '(' or a leading '--', '-+', '+-' or '--'). Finally, a /g modifier is useless if the pattern is anchored to the beginning of the string. And, if you're golfing, you shouldn't make a capture if you aren't using the result.

Your s/// could be written as:

s/^\(?([-+])\1//
My entry (untested):
perl -nE'/\(?([-+])\1.*?(\S{3,80}->\S{5,80})/&&say$2' *|sort -u
I do think the 80 is a bit arbitrary, and
perl -nE'/\(?([-+])\1.*?(\S{3,}->\S{5,})/&&say$2' *|sort -u
is not only shorter, but likely to be preferred.