
Starting with perl 5.10, it is possible to create a lexical version of the perl default variable $_. certain perl constructs like the "given" keyword automatically use a lexical $_ rather than the global $_.
it is occasionallly useful for a sub to be able to access its caller's $_ variable regardless of whether it was lexical or not. the "(_)" sub prototype is the official way to do so, however there are sometimes disadvantages to this; in particular it can only appear as the final required argument in a prototype, and there is no way of the sub differentiating between an explicitly passed argument and $_.
lexical::underscore allows you to access your caller's lexical $_ variable as easily as:
${lexical::underscore()}