Schrift
[thread]8176[/thread]

Array umsortieren



<< >> 7 Einträge, 1 Seite
EagleFox
 2006-07-18 16:23
#68211 #68211
User since
2006-04-10
66 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,

ich habe folgendes Problem:
In einem Array habe ich einen Datensatz, der vorher aus 4 Spalten und vielen vielen Zeilen bestand. Nun muss ich den Datensatz einmal genau "umdrehen". Also sowas ähnliches wie "reverse" machen würde nur so, dass nicht die ehemaligen Spalten vertauscht werden.

Beispiel Datensatz vorher:
Code: (dl )
1
2
3
4
1 a 10 100
2 b 20 200
3 c 30 300
4 d 40 400


Datensatz nachher:
Code: (dl )
1
2
3
4
4 d 40 400
3 c 30 300
2 b 20 200
1 a 10 100


Diesen Datensatz habe ich wie gesagt in einem! Array. Kann man das irgendwie so umsortieren, oder muss ich den Datensatz tatsächlich in 4 Arrays zerlegen und dann jeweils "reverse @array" anwenden?
"reverse" würde doch aus dem Array oben folgendes machen:

Code: (dl )
1
2
3
4
400 40 d 4
300 30 c 3
200 20 b 2
100 10 a 1


oder gibt es da noch irgendwelche Tricks??

Besten Dank im voraus!
Ronnie
 2006-07-18 16:46
#68212 #68212
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Zeig mal mit CPAN:Data::Dumper wie das Array aussieht, das du sortieren willst!
styx-cc
 2006-07-18 16:49
#68213 #68213
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Hoi,

Code: (dl )
1
2
3
4
5
6
7
8
#!/usr/bin/perl -w
use strict;

my @array = ("1 a 10 100",
"2 b 20 200",
"3 c 30 300",
"4 d 40 400");
print join("\n", reverse(@array) );

Ausgabe:
Code: (dl )
1
2
3
4
5
stefan@workaholic:~/programmierung/perl/community$ perl sort.pl
4 d 40 400
3 c 30 300
2 b 20 200
1 a 10 100
Pörl.
EagleFox
 2006-07-18 17:13
#68214 #68214
User since
2006-04-10
66 Artikel
BenutzerIn
[default_avatar]
Hi,

@Ronnie.

Also wenn ich "print Dumper($datensatz);" im script ausführe, zeigt er mir folgendes:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$VAR1 = '   4.9863     0.6326     0.1831     0.0375
4.9741 0.6302 0.1852 0.0589
4.9625 0.6287 0.1852 0.0568
4.9680 0.6323 0.1855 0.0220
4.9854 0.6329 0.1862 0.0555
4.9973 0.6308 0.1855 0.0577
4.9878 0.6290 0.1865 0.0494
4.9677 0.6250 0.1831 0.0476
4.9548 0.6256 0.1840 0.0525
4.9564 0.6244 0.1840 0.0522
4.9646 0.6256 0.1846 0.0537
4.9619 0.6262 0.1852 0.0552
4.9451 0.6250 0.1843 0.0580
4.9194 0.6210 0.1819 0.0565
4.9066 0.6158 0.1782 0.0546
4.9149 0.6198 0.1807 0.0571
4.9179 0.6223 0.1819 0.0592
4.9133 0.6183 0.1807 0.0592
4.9011 0.6177 0.1801 0.0586
4.8914 0.6198 0.1797 0.0592

';

Die Ausgabe ist natürlich riesig, aber ich wollte hier keine 2000 Zeilen einfügen.
Wolltest Du das sehen? Oder wie habe ich Dumper zu nutzen, um die nötigen Infos zu bekommen?

@styxx-cc
werde ich gleich mal ausprobieren!

[EDIT]
Nee, klappt nicht, der Datensatz sieht exakt so aus wie vorher. Komisch, das reverse greift hier nicht. Was mache ich nur falsch?

Danke schon mal für die Hilfe!\n\n

<!--EDIT|EagleFox|1153229116-->
betterworld
 2006-07-18 18:03
#68215 #68215
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=EagleFox,18.07.2006, 15:13]Also wenn ich "print Dumper($datensatz);" im script ausführe, zeigt er mir folgendes[/quote]
Du hast doch gesagt, dass Du ein Array hast. Aber $datensatz ist kein Array. Gib uns mal print Dumper(\@array)
betterworld
 2006-07-18 18:05
#68216 #68216
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Wobei bei diesem Datensatz Dein Ziel wahrscheinlich mit
Code: (dl )
$datensatz = join "\n", reverse split /\n/, $datensatz;

erreicht waere.

Edit: "\n" zu /\n/ gemacht\n\n

<!--EDIT|betterworld|1153238424-->
EagleFox
 2006-07-18 19:28
#68217 #68217
User since
2006-04-10
66 Artikel
BenutzerIn
[default_avatar]
Pein und Schmach über mich!
Die Hitze hier verursacht bei mir wohl Schädelfraß. Da habe ich Euch wohl "angeflunkert", ist garkein Array! Ich erkenne meine eigenen Programme nicht mehr.

@betterworld

Du hast es total richtig erkannt. Sorry für meinen Fauxpas!

Jetzt hat es super geklappt! Besten Dank für Hilfe!

... und ich lege mich am besten direkt ins Bett ...
<< >> 7 Einträge, 1 Seite



View all threads created 2006-07-18 16:23.