ほとんどの場合、ハッシュ(連想配列はもはやperl構文ではありません)を使用したくない可能性があります。あなたが記述しているのは配列を使うことです。ハッシュは、ユニークキー、シリアルデータの配列に接続されたデータを格納するために使用されます。もちろん
open my $fh, "<", $inputfile or die $!;
my @array = <$fh>;
print @array; # will preserve the order of the lines from the file
、あなたはデータをソートしたい場合は、print sort @array
でそれを行うことができます。
今ではハッシュで行われていた場合、あなたのような何かをしたい:
my %hash = map { $_ => 1 } <$fh>;
print sort keys %hash; # will not preserve order
をそして、あなたが見ることができるように、最終的な結果は、あなたが、元の順序を保持していないだけということですファイルではなく、代わりににはをソートするか、セミランダムな順序を取得する必要があります。あなたが同じ行を持っていれば、すべての間、あなたはキーを上書きするリスクがあります。これはデデュープデータには有効ですが、ファイル内容の真の表現には適していません。
あなたは、「ちょっと、別の種類のキーを使用してその行を値として保存するとどうなりますか?」と思うかもしれません。まあ、もちろん、JRFergusonのアドバイスを受けて数値指標を使用するかもしれません。しかし、適切な配列を使用することの自然な利点を排除するために、配列を使用しています。あなたは実際にはゲイン何もこれを行うことで、物事を失うものではありません。
出典
2012-03-12 16:26:57
TLP
Perlはハッシュを「連想配列」と呼んでいましたが、それは入力が多すぎるため、1994年にPerl 5がリリースされたときに停止しました。最近では、この用語は恐ろしく古くなったリソースからPerlを学んだことがあります: –
、または恐ろしく古いPerl風の言語でプログラミングすることを学んだ人。 – mob
@davorg:ありがとうと感謝します。 – JRFerguson