Okay so I came across a code which looks like
@documents_names = sort { !!$deleted_documents_names{$a} == !!$deleted_documents_names{$b} ? uc($a) cmp uc($b) : !!$deleted_documents_names{$a} cmp !!$deleted_documents_names{$b} } @documents_names; It's the first time I'm seeing the use of double negation. What's the use of it? When would a person use it?
It converts non-boolean types to boolean (dualvar(0,"") or 1).
It is a shortcut way of doing this, instead of trying to cast it explicitly (which may take more characters). The ! operator negates the truthness of its argument. Hence, two of them are used.
Many object types are "truthy", and others are "falsey".
0, undef, "", "0" and some overloaded objects.1, "asdf", and all other values.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With