[Boulder.pm] How do I catch "Can't locate <module>.pm" errors at runtime

Janine Goldstein janine at ucar.edu
Mon Oct 19 13:48:05 PDT 2009


DeAndre,

Thanks so much. This works like a charm!
And thanks to Adriano for the additional explanations.

Janine

DeAndre Carroll wrote:
> The thing to remember here is that 'use' is a compile time directive. 
> It is shorthand for the following:
>
> BEGIN {
>    require YourModule;
>    YourModule->import(LIST);
> }
>
> You could wrap the require and import steps in an eval {} and exit 
> gracefully given an error (found in $@).
>
> Hope this helps.
>
>
> Janine Goldstein wrote:
>> Hi Boulder Perl Mongers,
>>
>> I have been trolling the web looking for help with a programming 
>> problem and I found your group. Hopefully this is a good place to ask 
>> my question.
>>
>>
>> I have some code that uses a Perl module and I would like to catch the
>> error "Can't locate <module>.pm in @INC" at runtime, give use user an
>> error message telling them they need to run the code on a different
>> machine, and exit gracefully.
>>
>> I have tried:
>>
>> no warnings FATAL
>> eval {use <module>}; warn $@ if $@;
>> BEGIN {$SIG{"__WARN__"} = sub {...};
>> try {use <module>;} catch {...};
>>
>> all to no avail. Am I messing up the syntax or is there something more
>> fundamental going on?
>>
>> Thanks for any and all help!!!!
>>
>> Janine
>>
>> _______________________________________________
>> Boulder-pm mailing list
>> Boulder-pm at pm.org
>> http://mail.pm.org/mailman/listinfo/boulder-pm
>>
>>
>
> _______________________________________________
> Boulder-pm mailing list
> Boulder-pm at pm.org
> http://mail.pm.org/mailman/listinfo/boulder-pm



More information about the Boulder-pm mailing list