我使用 split 函数有两种方式。第一种方式(将字符串作为参数传递给 split):
my $string = "chr1.txt";
my @array1 = split(".", $string);
print $array1[0];
我遇到了这个错误:
当我使用第二种方式(将正则表达式作为参数传递给 split)进行分割时,没有出现任何错误。在打印时使用了未初始化的值
my @array1 = split(/\./, $string); print $array1[0];
我的第一个分割方法只对点号无效。
这背后的原因是什么?
split
函数的参数总是解释为一个模式。传递参数"."
和传递参数/./
是一样的:都会以非换行符[^\n]
或者\N
作为分隔符进行分割—— 除非use re "/m"
在作用域内,这时它将以任何单个 Perl 代码点(包括在 0x1F_FFFF 以上的非 Unicode 代码点)作为分隔符进行分割。 - tchrist