Thread use bei nicht-vorhandenen Pakten (3 answers)
Opened by Gast at 2007-08-07 16:35

murphy
 2007-08-08 16:40
#97781 #97781
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Ich finde, dass hier eigentlich nichts dafür spricht, eine Stringauswertung zu verwenden. Viel sauberer wäre
Code (perl): (dl )
1
2
3
4
5
6
7
eval { require Some::Module; };
unless ($@) {
  import Some::Module;
}
else {
  warn "Couldn't load Some::Module: $@";
}


edit: Wenn man das ganze mehrfach benötigt, könnte man sich auch eine Subroutine dafür schreiben:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
sub try2use(*@) {
  my $m = shift;

  local $_ = $m; s|::|/|g; $_ .= ".pm";
  my $r = eval { require };

  $m->import(@_) if ($r && !$@);

  $r;
}


Dann reduziert sich das optionale Einbinden des Moduls auf das meiner Meinung nach gut verständliche Konstrukt
Code (perl): (dl )
1
2
3
if (try2use My::Module) {
  # do something
}
When C++ is your hammer, every problem looks like your thumb.

View full thread use bei nicht-vorhandenen Pakten