Hello, I have some questions regarding mod_perl, threads, thread-safe functions, special vars scope...
From https://perl.apache.org/docs/2.0/user/coding/coding.html#toc_Thread_environment_Issues : "if you chdir() in one thread, all other thread now see the current working directory of that thread that chdir()'ed to that directory" Do we speak about threads from threaded MPM ? (so the specific Apache process which owns the thread running this Perl script, and all its (the process) threads, will chdir()). From the same page : "Other usually problematic (non thread-safe) functions include readdir(), srand(), etc." Why readdir() would not be thread-safe ? I can't see why. Perhaps readdir() chdir() to read a directory content ? How could we then read dir content being thread-safe ? From https://perl.apache.org/docs/general/perl_reference/perl_reference.html#toc_The_Scope_of_the_Special_Perl_Variables : "In the mod_perl situation where the child server doesn't usually exit, if in one of your scripts you modify a global variable it will be changed for the rest of the process' life and will affect all the scripts executed by the same process." So in a threaded MPM, if one of the threads modifies one of the special Perl variables, it will instantly affect all other threads of this process ? What about variables like $? ? (return code of system() calls) And ${^CHILD_ERROR_NATIVE} ? (return code too) Does their value stay local to the thread ? / Does each thread have these variables with their own proper value ? Or is it unsafe to read them because they could be modified by another thread ? Thank you very much for your clarification, Best regards, Ben