> I think so.  Would it be a fair summary to say that the quotes defer
> the entire load->tie->fetch sequence until run time where eval can
> catch problems at any step,

This is right.

> but without the quotes the eval can only trap problems at the fetch step?  

Not exactly.  With no quotes, the eval is too late to trap problems at
*any* step.  Consider

        eval $s

What happens here?  Perl fetches the (string) value of $s.  Perl
passes this value to the 'eval' operator.  'eval' compiles the string
as Perl code, executes it, and returns the result.  But if step 1, the
fetch, causes a fatal error, that is too soon for the eval to rescue
the situation.  If you have eval $!{ENOENT}, perl calls Errno::FETCH
*before* the eval, then passes the result to eval.  If Errno::FETCH
throws an exception, it does so too soon for the exception to be
caught by the eval.

Reply via email to