这是我的Perl代码
NSSortComparator
在我的脚本顶部,我有use POSIX;
my @arr = split(/\\n\\n/, $content);
my $len = length @arr;
$len = $len / 2;
my $b = round($len) - 1;
。我曾经use POSIX
,但那不起作用。
我试图使用use Math::Round
功能,但是当我打电话时页面会一直断断续续。
答案 0 :(得分:0)
你没有说你希望做什么,但看起来你有一个变量$content
是前一次操作的结果
您认为数据是以块为单位构成的,块之间有一个空行,因此您要拆分四字符序列\n\n
以将块放入数组@arr
<的每个元素中/ p>
(请不要调用数组@arr
。@
说它是一个数组并且添加arr
就没有意义。以下字符是您解释性质的机会您的数组包含的数据,这是一个非常宝贵的机会。我不知道您的数据包含什么:它可能是下两个星期日的日期,或下一个彩票的号码。@arr
说什么都没有。)
实际上,块之间可能只有两个换行符,因此@arr
将在单个元素$content
$arr[0]
其余代码看起来像
my $len = length @arr;
$len = $len / 2;
my $b = round($len) - 1;
我想您希望将$len
设置为@arr
中的元素数量。你可以写my $len = @arr
来做到这一点。你所写的内容完全不同
然后你要将设置为$len
的任务减半,将其四舍五入并减去一个
看起来你的目标是做一些像合并排序这样的事情,你需要将数组拆分成两半并递归处理它们
如果我是对的,那么$len
现在将是整数或整数加0.5,并且调用POSIX::round
并不比简单的int
我现在做了很多猜测,继续下去是没有意义的。如果你解释了你的总体目标,那么我们将能够更好地帮助你
答案 1 :(得分:0)
是的,但您错误地使用了length
功能。
length @arr
不会像您期望的那样返回数组@arr
的大小,它只返回@arr
大小的长度。要获取数组长度,您需要使用scalar @arr
或“在标量上下文中评估@arr
”:
$len = scalar @arr;
$len = @arr; # assignment to scalar is "scalar context"
目前还不清楚你是否正确使用split
。
@arr = split /\\n\\n/, $content
拆分文字字符串\n\n
。如果您想在有连续换行符的地方拆分$content
,您只想说
@arr = split /\n\n/, $content