我正确使用圆形功能吗?

时间:2016-09-08 18:18:27

标签: perl

这是我的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功能,但是当我打电话时页面会一直断断续续。

2 个答案:

答案 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