/ / Jak warunkowo używać wątków w skrypcie perla? - wielowątkowość, perl

Jak warunkowo używać wątków w skrypcie perla? - wielowątkowość, perl

Mam skrypt perla, który stworzyłem, działający na hostach, które mają różne wersje perla, czasem skompilowane z wątków, a czasami bez.

mam

use if $Config{"useithreads"}, "threads";

A cały mój kod specyficzny dla wątku jest podobny do warunkowych.

Jednak podczas fazy kompilacji perl wciąż dławi wątki :: all, threads :: running, itp.

Jak mogę się upewnić, że mój skrypt działa zarówno na wątkach gwintowanych, jak i bez wątków?

 [ worr on worr-mn1 ] ( manage_usr_local_admin ) % perl -c acct_mgr_ng.pl
Bareword "threads::joinable" not allowed while "strict subs" in use at acct_mgr_ng.pl line 117.
BEGIN not safe after errors--compilation aborted at acct_mgr_ng.pl line 541.

Odpowiedzi:

3 dla odpowiedzi № 1

Gdy wątki są ładowane, perl o tym wie threads::all (i przyjaciele) to wywołanie podprogramu, nawet bez nawiasów lub &; ponieważ wątki nie mogą być ładowane, po prostu jawnie nazwij je nawiasami: threads::all()


2 dla odpowiedzi nr 2

use instrukcje są analizowane w czasie kompilacji. Chcesz użyć require lub Moduł :: Ładuj wciągać moduły warunkowo w czasie wykonywania.

Coś takiego powinno działać:

use Module::Load ();
if($Config{"useithreads"}) {
Module::Load::load("threads");
}