我在Perl中写了一个梳子。一切看起来都不错,但程序不起作用,编译器也没有显示任何错误。我想请你帮忙。代码是:
Public Function UserName()
Try
Return Report.User!UserID
Catch
Return "System"
End Try
End Function
答案 0 :(得分:2)
修订后的代码使用$n
但从未设置它。如果您使用use warnings;
和use strict;
,那么您就会知道这个问题。有了这些指令,我得到:
$ perl comb.pl
Global symbol "$n" requires explicit package name at comb.pl line 20.
Execution of comb.pl aborted due to compilation errors.
$
代码中只有5个变量,包括$n
,因此my
只需要出现5次。
将$n
设置为初始值$gap
(又名scalar(@tab)
),代码会对您的数据集进行排序,然后我的。
#!/usr/bin/env perl
use strict;
use warnings;
my @tab = ( 19, 13, 2, 5, 3, 11, 17, 7 );
#my @tab = (1,3,5,22,2,12,1);
my $gap = scalar(@tab);
my $replace = 1;
my $n = $gap;
print "Unsorted array: @tab\n";
while ($gap>1 || $replace)
{
$gap = ($gap * 10) / 13;
$gap = 1 if ($gap == 0);
print "Gap = $gap\n";
$replace = 0;
for (my $i=0; $i+$gap < $n; $i++)
{
if ($tab[$i]>$tab[$i+$gap])
{
($tab[$i], $tab[$i+$gap]) = ($tab[$i+$gap],$tab[$i]);
$replace = 1;
}
}
}
print "Sorted array: @tab\n";
示例运行 - 您的数据
Unsorted array: 1 3 5 22 2 12 1
Gap = 5.38461538461539
Gap = 4.14201183431953
Gap = 3.18616294947656
Gap = 2.45089457652043
Gap = 1.88530352040033
Gap = 1.45023347723102
Gap = 1.11556421325463
Gap = 0.85812631788818
Sorted array: 1 1 2 3 5 12 22
示例运行 - 我的数据
Unsorted array: 19 13 2 5 3 11 17 7
Gap = 6.15384615384615
Gap = 4.73372781065089
Gap = 3.64132908511607
Gap = 2.80102237316621
Gap = 2.15463259474323
Gap = 1.65740968826403
Gap = 1.27493052943387
Gap = 0.980715791872205
Sorted array: 2 3 5 7 11 13 17 19
如果您打算在SO上询问有关Perl的任何其他问题,请确保您已使用use strict;
和use warnings;
修复了报告的所有明显问题 - 或者,如果您不能,您的问题应该是如何解决您遇到的具体警告或错误。
请记住研究如何创建MCVE(Minimal, Complete, Verifiable Example)或 SSCCE(Short, Self-Contained, Correct Example) - 两个相同基本想法的名称和链接。