6
#!/usr/bin/perl
# countlines2.pl by Bill Weinman <http://bw.org/contact/>
# Copyright (c) 2010 The BearHeart Group, LLC

use strict;
use warnings;

sub main {
my @values = (43,123,5,89,1,76);
my @values1 = sort(@values);

  foreach $value(@values1){
    print "$value\n";
  }
}

Errors - 
"Global symbol "$value" requires explicit package name at task2.txt line 12
"Global symbol "$value" requires explicit package name at task2.txt line 13

我是 perl 的初学者,所以我遇到了上述错误。另外请告诉我 perl 默认如何对数字进行排序(例如 sort(@values) 会产生什么结果?)。

4

2 回答 2

16

use diagnostics;您可能会发现添加它会为您提供以下附加信息很有帮助:

(F) 你说过“use strict”或“use strict vars”,这表示所有变量必须要么是词法范围的(使用“my”或“state”),要么事先使用“our”声明,或者明确限定为说出全局变量在哪个包中(使用“::”)。

foreach $value(@values1){应该foreach my $value(@values1){

于 2013-04-25T15:43:06.383 回答
11

错误是因为您没有声明$value

foreach my $value(@values1){
    print "$value\n";
  }

排序文档可以在这里找到:http: //perldoc.perl.org/functions/sort.html

于 2013-04-25T15:41:57.503 回答