Schrift
[thread]10514[/thread]

mehrdimensionales Array sortieren mit Besonderheit

Leser: 3


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
tr8000
 2007-10-05 11:43
#100320 #100320
User since
2007-10-05
3 Artikel
BenutzerIn
[default_avatar]
Hallo Leute!

Ich sortiere in meinem Script ein multidimensionales Array folgendermaßen:

Code: (dl )
@data = sort{ lcfirst $a->[1] cmp lcfirst $b->[1] } @data;


Jetzt möchte ich noch einbauen, dass führende und nachstehende Leerzeichen entfernt werden. Grundlage:

Code: (dl )
$a =~ s/^\s+|\s+$//g;


Leider hab ich noch nicht herausgefunden, wie ich das oben syntaktisch korrekt einsetze und meine recherchen haben auch nichts ergeben.
Vielleicht kann mir ja einer von euch helfen.

Vielen Dank im Voraus
greez, tr8000

PS: entfernt die o.g. Zeile eigentlich führende UND nachstehene Leerzeichen oder nur führende ODER nachstehende?
renee
 2007-10-05 11:53
#100321 #100321
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
So etwas kann man auch ganz schnell selbst ausprobieren ;-)

Code: (dl )
1
2
C:\>perl -e "my $var = '    test    '; $var =~ s/^\s+|\s+$//g; print qq~'$var'~;"
'test'
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
tr8000
 2007-10-05 13:50
#100335 #100335
User since
2007-10-05
3 Artikel
BenutzerIn
[default_avatar]
stimmt...
trotzdem nur die Antwort auf das PS! :)
renee
 2007-10-05 14:12
#100337 #100337
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Willst Du nach dem sort die orginal-Daten verwenden (1) oder die geänderten (2)?

(1)
Code (perl): (dl )
1
2
3
@data = map{$_->[0] }
                      sort{ lcfirst $a->[1] cmp lcfirst $b->[1] }
                      map{ my $var = $_; $var =~ s/^\s+|\s+$//; [$_,$var] } @data;


(2)
Code (perl): (dl )
1
2
@data = sort{ lcfirst $a->[1] cmp lcfirst $b->[1] }
                      map{ s/^\s+|\s+$//; $_ } @data;



ungetestet
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
tr8000
 2007-10-09 12:40
#100542 #100542
User since
2007-10-05
3 Artikel
BenutzerIn
[default_avatar]
funktioniert leider nicht...
Struppi
 2007-10-09 13:32
#100547 #100547
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
aha. Wieso nicht?
renee
 2007-10-09 14:08
#100554 #100554
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
tr8000+2007-10-09 10:40:01--
funktioniert leider nicht...


... ist leider nicht sehr aussagekräftig...

Fehlermeldungen? Was *soll* das Ergebnis sein? Was *ist* das Ergebnis?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GwenDragon
 2007-10-09 16:28
#100564 #100564
User since
2005-01-17
14607 Artikel
Admin1
[Homepage]
user image
tr8000+2007-10-05 09:43:52--

Ich sortiere in meinem Script ein multidimensionales Array folgendermaßen:

Code: (dl )
@data = sort{ lcfirst $a->[1] cmp lcfirst $b->[1] } @data;
Das ist aber ein eindimensionales Array.

Sieht dein Array so aus?
Code (perl): (dl )
1
2
3
4
my $arr = [
  ['Bratwurst', 3.50, 'Eur']
  ['Eier', 70, 'Cent']
];

Oder wie?
Gast Gast
 2007-10-09 17:00
#100568 #100568
@gwendragon: wäre es ein eindimensionales Array, dann würde doch nicht der Pfeiloperatpor mit nachfolgenden [] benützt.
Der Array sieht eben ungefähr so aus:
Code: (dl )
1
2
3
4
@data = (
[ 1, 'Eins' ],
[ 2, 'Zwei' ],
);


@renee: ich glaube dein map {} ist da falsch.
Da muss es $_->[1] und nicht $_ heissen. ( 2. Beispiel )

MfG
renee
 2007-10-09 17:17
#100569 #100569
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Gast+2007-10-09 15:00:32--
@gwendragon: wäre es ein eindimensionales Array, dann würde doch nicht der Pfeiloperatpor mit nachfolgenden [] benützt.
Der Array sieht eben ungefähr so aus:
Code: (dl )
1
2
3
4
@data = (
[ 1, 'Eins' ],
[ 2, 'Zwei' ],
);


@renee: ich glaube dein map {} ist da falsch.
Da muss es $_->[1] und nicht $_ heissen. ( 2. Beispiel )

MfG


Ohne Beispieldaten ist es auch ziemlich schwer...

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
@data = (
    [ 1, ' Eins  ' ],
    [ 2, '   Zwei  ' ],
);

@data = sort{ lcfirst $b->[1] cmp lcfirst $c->[1] }
                       map{ $_->[1] =~ s/^\s+//; $_->[1] =~ s/\s+$//; $_ } @data;
                       
use Data::Dumper;
print Dumper \@data;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2007-10-05 11:43.