Perl 是否限制全局参数中字符串的大小?

Perl 是否限制全局参数中字符串的大小?,perl,glob,Perl,Glob,我正在使用glob函数来分解一些列表 到目前为止,一切都很正常,如果字符串超过一定长度,glob函数似乎不起作用 在我的代码中,我有 my @output = glob("{a,b,c}__{d,e,f}__{g,h,i}"); 并且得到了输出 "a__d__g","a__d__h",...,"c__f__i" 当字符串太长时会出现问题,当字符串长度超过254个字符(不包括254个字符)时(没有{和}) 当字符串太长时,glob函数不会对每个{}进行串联,它会在使字符串执行254个字符的“组

我正在使用
glob
函数来分解一些列表

到目前为止,一切都很正常,如果字符串超过一定长度,
glob
函数似乎不起作用

在我的代码中,我有

my @output = glob("{a,b,c}__{d,e,f}__{g,h,i}");
并且得到了输出

"a__d__g","a__d__h",...,"c__f__i"
当字符串太长时会出现问题,当字符串长度超过254个字符(不包括254个字符)时(没有
{
}
) 当字符串太长时,glob函数不会对每个
{}
进行串联,它会在使字符串执行254个字符的“组”之前结束

这是已知的glob限制吗?有什么办法吗

我相信这是一个限制,因为255=b11111111(可能是某种溢出)

你觉得怎么样

谢谢:)

替代解决方案:

use Algorithm::Loops qw( NestedLoops );

my $iter = NestedLoops([
   [qw( a b c )],
   [qw( d e f )],
   [qw( g h i )],
]);

while (my @vals = $iter->()) {
   my $s = join("__", @vals);
   ...
}

glob函数用于生成文件名列表。您是否考虑过以不同的方式生成字符串,例如通过递归函数
交叉乘积(['a',b',c'],['d',e',f'],['g',h',i'])
?@amon我尝试了算法::NestedLoops模块,它在我的64位版本的perl上运行良好,但我不得不切换到32位,在32位上找不到它ppm@toolic我真的不能,有上千根弦,有些在254个字符以上,所以它可以工作,但是当我保持相同的格式和大于254个字符的大小时,它就不再工作了。所以像世界其他地方一样从CPAN安装它:
CPAN Algorithm::Loops
Algorithm::Loops是一个纯Perl模块。它决不依赖于体系结构,因此64位与32位是不相关的。您甚至可以从模块中复制相关代码(模块的许可证允许这样做)。或者只编写自己的函数。或者最明智的做法是,直接从CPAN安装,而不是将自己局限于PPM。你有很多选择。是的,用这个模块试过了,它在64位版本的Perl上工作,但我不得不切换到32位,以确保代码在所有设备上的兼容性。我在32位ppm上找不到它,如果我从CPAN获得I,它可以工作,但我不确定它是否100%兼容32位perl,因为它不在activeState的存储库中