Not an existential question this one, but an interesting 'bug'.
I have never used if (exists $var->{key}) {}
I don't know why, but I just have never needed to. In fact, I can only just barely remember being told about it on a course.
I have always used if (defined $var->{key}) {}
What is the difference.
To quote the Camel
A variable can only be defined if it exists, however, the reverse is not necessarily true.
So, if during an initialisation step, you do
$model->{primary_key} = [result of some sql query for primary key]
but there is no primary key result as the sql statement returned no results, then
(exists $model->{primary_key}) == true
however
(defined $model->{primary_key}) == false
as $model->{primary_key} == NULL
Just something I found whilst trying to bug-fix why my save kept trying to go to update (and then croaking because of, you guessed it, no primary key) when it should have been going to create.
I suppose I should have know this, but when I have always, in the past, used defined to tell me if it both exists and is defined, then it's an easy thing to miss.
Andy
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment