As an old Fortran hack, I understand the issue of long function call lists, but I am concerned by the issues of common blocks and global variables far more acutely. The advantage Perl has over C in this regard is the ease of working with arrays, hashes and even objects. If your call-list is more than a handful of parameters, you should reconsider the design of your data structures.
In any case, the posted pseudo-code could be updated to use a code ref and a closure in the following way:
my $lig;
...
$lig=4;
print STDERR "ligA <<$lig>>\n";
my $xxxx = sub
{
...
print STDERR "ligX <<$lig>>\n";
};
print STDERR "ligB <<$lig>>\n";
$xxxx->();
The code ref has identical scope to the lexical variable, so know you don't have the potential for cross-thread contamination.
And I would very strongly disagree with the idea that Perl's handling of UTF-8 is problematic in comparison to any other language offering out there.
#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.
|