サブルーチン、つまり数値の配列をソートするために使用されているソート関数に問題があります。ソート関数を単独で使用する場合は、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";
}
}
誰かが明確にすることができれば大いに感謝します。