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


in reply to Re^2: return value of chomp is false?
in thread return value of chomp is false?

Let me try to elaborate on my answer.

Firstly, here is a quote from the documentation for the Conditional Operator:

Ternary "?:" is the conditional operator, just as in C. It works much like an if-then-else. If the argument before the ? is true, the argument before the : is returned, otherwise the argument after the : is returned.

Coming from the STDIN handle, I agree that $_ will have a newline character. This means that chomp $_ will return 1. Since Perl treats 1 as a true value, the ternary operator will return the argument before the :.

In your first case, chomp $_ ?"":$_, the ternary operator returns an empty string.

In your second case, chomp $_ ?$_:"", the ternary operator returns $_.