I'm trying to make some changes to a module, and thought that for version comparison, I could take advantage of List::MoreUtils's each_array function. However, not needing List::MoreUtils in all cases, I thought I'd just require it only when needed. No go. First, the code. The original is a mess, and not even mine, so I'm not going to finger the guilty party. However, I did get it down to a nice, small test case.
#!/usr/bin/perl
use strict;
use warnings;
require List::MoreUtils;
# use List::MoreUtils ();
my @v1 = qw(4 0 0 3);
my @v2 = qw(4 0 0 3);
my $ea = List::MoreUtils::each_array(@v1, @v2);
while (my ($v, $t) = $ea->())
{
}
If you run this, and your system has the same problem as mine, you'll get:
$ perl ./tst.pl
Segmentation fault
If, however, you switch it to use, even explicitly importing nothing (which I think is the default anyway), the seg fault goes away.
Switching to use the pure-perl implementation may fix this as well - but that seems like as much of a work-around as just using use.
Can anyone confirm that this is a general problem, and not just my machine?