我在使用子例程时遇到了一些问题,即用于对数字数组进行排序的sort函数。我知道如果你单独使用 sort 函数,它会使用 ASCII 格式进行排序,因为本书描述了这个和那个排序不是所需的顺序。我知道并了解使用<=>
比较值返回的内容,甚至被引入cmp
字符串(尽管我还没有使用它)。
我具体不明白的是它如何对它们进行数字排序 - 实际过程。我了解返回的内容,但本书只是说它返回 -1、0 和 1,而不是数字最终如何具体排序为1 8 24 72 144 288
.
我的例子:
sub sort_by_number {
return $a <=> $b;
}
@myArray = (1,24,8,144,72,288);
foreach(sort sort_by_number(@myArray)) {
print("$_ ");
}
我完全理解的例子。这很有意义,但我认为这主要是由于编码:
#!/usr/bin/perl
print("Please enter your name: ");
$name = <STDIN>;
chomp($name);
print("Please enter your age: ");
$age = <STDIN>;
chomp($age);
print(greeting($name, $age));
sub greeting {
$msg = "Hello $_[0], ";
determine_age($_[1],$msg);
}
sub determine_age {
$num = ($_[0] <=> 18);
if ($num == -1) {
return "$_[1]you are under 18.($_[0])\n";
} elsif ($num == 0) {
return "$_[1]you will be a 19 on your next birthday!\n";
} else {
return "$_[1]you are over 18!($_[0])\n";
}
}
如果有人可以澄清,非常感谢。