![]() |
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| Quick sed spørgsmål | vbm | Shell Programmering og Scripting | 2 | 11-09-2006 10:44 PM |
| Ok hurtigt spørgsmål | Corrail | Shell Programmering og Scripting | 1 | 11-11-2005 01:49 PM |
| Quick perl spørgsmål | jason_v | Shell Programmering og Scripting | 7 | 11-26-2003 04:31 AM |
| Quick Spørgsmål | catbad | UNIX for dummyer Spørgsmål & svar | 7 | 03-25-2003 07:01 PM |
| Quick Spørgsmål | Tracy Hunt | UNIX for dummyer Spørgsmål & svar | 3 | 02-20-2001 04:20 PM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
[B] Perl slags hurtig spørgsmål [/ B]
Jeg har lavet en hurtig Google om dette, men kunne ikke finde det svar, jeg ønsker.
Sige, at der er en matrix som denne: @ A \u003d qw (CD1 a1 ef a2 hij a12 B2 B4 B22); Jeg ønsker at sortere array i den første ordre: @ sorteret \u003d qw (a1 a12 a2 b2 B22 b4 CD1 ef hij); Og anden orden: @ sorteret \u003d qw (a1 a2 a12 B2 B4 B22 CD1 ef hij); Er der en måde at gøre dette i Perl uden at bruge moduler? Thanks a lot! Senest redigeret af zx1106; 10-09-2008 kl 12:44 PM.. |
|
||||
|
Ja, kan du sortere med en brugerdefineret regel. Men hvad er reglen for den slags? Hvis du ikke kan finde ud af en formel specifikation af den slags, vil ingen være i stand til at gøre det "korrekt".
Følgende giver samme bestilling som du nævnte, men der er ingen garanti for, at den vil give dig den "rigtige" bestilling (som man kunne forvente) for andre input værdier: Code:
use Data::Dumper;
@A = qw(cd1 a1 ef a2 hij a12 b2 b4 b22);
print Dumper([sort {
my ($_a, $_b);
for ([$a, \$_a], [$b, \$_b]) {
$_->[0] =~ /^(.+?)(\d*)$/;
${$_->[1]} = [$1, $2];
}
($$_a[0] cmp $$_b[0]) || ($$_a[1] <=> $$_b[1]);
} @A]);
|
|
||||
|
Anden orden, som synes at være den første sortering af alpha derefter ciffer:
Code:
my @A = qw(cd1 a1 ef a2 hij a12 b2 b4 b22);
my @sorted = map{$_->[2]}
sort{$a->[0] cmp $b->[0] || $a->[1] <=> $b->[1]}
map{/([a-z]*)(\d*)/;[$1,$2,$_]} @A;
print "$_\n" for @sorted;
|
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|