Perl-如何解决if语句中的错误“在数字lt(<)中使用未初始化的值”

时间:2019-09-17 16:15:16

标签: perl

我正在创建一个基本的冒泡排序,但我不明白为什么会收到此错误,在第10行使用数字lt(<)中的未初始化值。

#!/usr/bin/perl -w
use strict;
use warnings;

my @nums = (7,3,5,8,5,2,3,5,7,3,5);
my $length = @nums;

for(my $i = 0; $i < $length; $i++){
        for(my $j = 0; $j < $length; $j++){
                if($nums[$j] lt $nums[$j+1]){
                        my $temp = $nums[$j];
                        $nums[$j] = $nums[$j+1];
                        $nums[$j+1] = $temp;
                }
        }
}

如果比较,似乎有问题。我确保使用这些值正确初始化了我的数组,并且它们确实是。如果我在for循环之前打印这些值,则它们可以正常打印并进行初始化。

我想我只是想念一些非常简单的东西,但老实说我迷路了。

1 个答案:

答案 0 :(得分:1)

在您的内部循环中,$j循环到$length-1。此时,$nums[$j]是数组的最后一个元素。然后将其与不存在的$nums[$j+1]进行比较。