我正在尝试编写代码以确认二维数组中的每一行都具有唯一值。
@x2 = uniq( @q2 );
产生了一个由10个元素组成的数组,而不是6个;然后$y2 = @x2;
产生了1?
我不明白为什么x2与x1不同,y2与y1不同?我期望得到5个元素的x2和y2 = 5(就像y1一样)。我该如何修复这个问题?
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use List::MoreUtils qw(uniq);
my @q1 = (6,0,0,5,0,7,0,0,1,0);
my @x1 = uniq( @q1 );
my $y1 = @x1;
print "y1 = ",Dumper( $y1 );
print "x1 = ",Dumper( @x1 );
print "q1 = ",Dumper( @q1 );
print '====='."\n";
my @b = ();
push @{ $b[0] }, (0,8,0,0,0,9,3,5,6,7);
push @{ $b[1] }, (6,0,0,5,0,7,0,0,1,0);
my $r=1;
my @q2=$b[$r];
my @x2 = uniq( @q2 );
my $y2 = @x2;
print "y2 = ",Dumper( $y2 );
print "x2 = ",Dumper( @x2 );
print "q2 = ",Dumper( @q2 );
print "b[r]=",Dumper( $b[$r] );
@q2
没有 10 个元素吗?因为你把$b[1]
赋值给它,是一个数组引用,因此是单一标量。因此,@x2
也是一样的,只有一个元素,该元素是一个数组引用。请像 @Сухой27 说的那样使用@{$b[$r]}
。 - zdim=()
)分配给新创建的数组(my @b
)没有意义。它已经是空的。 - ikegami