FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Tobias am 24 April 2019, 15:39:11

Titel: selektives "use" ?
Beitrag von: Tobias am 24 April 2019, 15:39:11
Hi,
wenn ich am Anfang des Moduls "use Paws" reinhänge, zwinge ich imho alle User dieses Modul zu installieren damit mein TTS läuft.
Gibt es da ein charmateren Weg? Oder verstehe ich es falsch?
zb. nicht meckern wenn Paws nicht verfügbar ist, erst meckern wenn ich das Modul verwenden will

Can't locate Paws.pm in @INC (you may need to install the Paws module) (@INC contains: ./FHEM/lib ./lib fhem.p/lib fhem.p/FHEM/lib ./FHEM ./ /usr/local/FHEM/share/fhem/FHEM/lib . /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.24.1 /usr/local/share/perl/5.24.1 /usr/lib/x86_64-linux-gnu/perl5/5.24 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.24 /usr/share/perl/5.24 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at ./FHEM/98_Text2Speech.pm line 30.
BEGIN failed--compilation aborted at ./FHEM/98_Text2Speech.pm line 30.
Titel: Antw:selektives "use" ?
Beitrag von: Loredo am 24 April 2019, 15:44:16
Beispiel:


eval {
    require JSON::MaybeXS;
    import JSON::MaybeXS qw( decode_json encode_json );
    1;
};
if (!$@) {
....
}



Aber: Sofern du zum FHEM Installer kompatibel sein möchtest, solltest dein Modul bei einem eigenen Errorhandling auch noch eine Funktion bieten, auch wenn das Perl Modul nicht installiert ist. Wenn es hingegen zwingend notwendig für die sinnvolle Nutzung ist, dann solltest du es beim normalen "use" belassen.
Titel: Antw:selektives "use" ?
Beitrag von: Tobias am 24 April 2019, 17:03:12
Danke, hat mir sehr geholfen.
Ich habe das require im eval Block innerhalb der attr set funktion untergebracht. So wird es erst geprüft und geladen wenn das TT_Ressource Attribute auf Amazon-Polly gestellt wird :)