Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number

Re^3: Defining, Testing and Documenting Perl?

by tobyink (Canon)
on Dec 24, 2019 at 01:13 UTC ( #11110572=note: print w/replies, xml ) Need Help??

in reply to Re^2: Defining, Testing and Documenting Perl?
in thread Defining, Testing and Documenting Perl?

I believe a tied hash can override how it behaves in scalar context, so that an empty hash can return true and a non-empty hash can return false.

An overloaded object can do various tricky things with regards to how it behaves as a boolean. For example, it could die.

if ($x || $y) { say "Something was true. What was it?"; say '$x' if $x; say '$y' if $y; } else { say "Neither was true."; }

It is possible for this to print "Something was true?" but not tell you what was true. This is because $x or $y could be an overloaded object returning true or false at random each time they are checked.

Replies are listed 'Best First'.
Re^4: Defining, Testing and Documenting Perl?
by LanX (Archbishop) on Dec 24, 2019 at 02:09 UTC
    yeah I already mentioned overload and I have to admit I didn't expect it but Tie::Hash is indeed mentioning a SCALAR method.

    But those edge cases were not my point, because these are backdoors to fake behavior.

    They should nevertheless be mentioned in a footnote and tested properly in an extra script.

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery FootballPerl is like chess, only without the dice

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://11110572]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (5)
As of 2020-06-03 22:21 GMT
Find Nodes?
    Voting Booth?
    Do you really want to know if there is extraterrestrial life?

    Results (29 votes). Check out past polls.