Ich versuche folgendes zu tun. Ich habe eine vordefinierte Liste, die als "Order by" für eine gegebene Liste verwendet werden kann.Wie sortiere ich eine Liste mit einer bestimmten Reihenfolge?
my @orderby = ('car', 'boat', 'chicken', 'cat', 'dog', 'mouse');
or
my %orderby = ('car' => 0, 'boat' => 1, 'chicken' => 2, 'cat' => 3, 'dog' => 4, 'mouse' => 5);
my @list = ('boat', 'car', 'mouse', 'chicken');
Ich versuchte unendliche Möglichkeiten, es zu sortieren, und ich habe nicht bekommen, was ich will. Ich habe auf Google gesucht, und hier, aber ich habe die Antwort nicht gefunden.
@list
Bedarf auf diese Weise sortiert werden:
sort @list using %orderby
Der Druck, den ich nach der Art wollen:
car, boat, chicken, mouse
BTW, können @liste Einträge dupliziert haben:
my @list = ('boat', 'car', 'mouse', 'chicken', 'mouse', 'car');
In diesem Fall muss der Druck:
sein 10car, car, boat, chicken, mouse, mouse
Haben Sie eine Lösung dafür? oder vielleicht ein anderer Ansatz. Danke !!
Re Ihr Update, mein Lösungen behandeln Duplikate. – ikegami
ja, das habe ich getestet! Danke nochmal! – Jonathan