![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui. |
Più di UNIX e Linux Forum Argomenti potreste trovare utili
|
||||
| Filo | Thread Starter | Forum | Risposte | Ultimo Post |
| rapido sed questione | VBM | Shell scripting e di programmazione | 2 | 11-09-2006 10:44 PM |
| Ok rapido questione | Corrail | Shell scripting e di programmazione | 1 | 11-11-2005 01:49 PM |
| Quick perl questione | jason_v | Shell scripting e di programmazione | 7 | 11-26-2003 04:31 AM |
| Domanda veloce | catbad | UNIX for Dummies Domande & Risposte | 7 | 03-25-2003 07:01 PM |
| Domanda veloce | Tracy Hunt | UNIX for Dummies Domande & Risposte | 3 | 02-20-2001 04:20 PM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
[B] Perl questione sorta veloce [/ B]
Ho fatto un resoconto di Google su questo, ma non riuscì a trovare la risposta che voglio.
Dico, vi è un array come questo: @ A \u003d qw (CD1 A1 EF A2 hij a12 b2 b4 B22); Voglio ordinare l'array nel primo ordine: @ ordinati \u003d qw (A1 A12 A2 B2 B22 B4 cd1 hij ef); E secondo ordine: @ ordinati \u003d qw (A1 A2 A12 B2 B4 B22 cd1 hij ef); C'è un modo per fare questo in Perl senza utilizzare i moduli? Thanks a lot! Last edited by zx1106; 10-09-2008 at 01:44 PM.. |
|
||||
|
Sì, è possibile ordinare con una regola personalizzata. Ma qual è esattamente la norma per l'ordinamento? Se non è possibile elaborare una specifica formale del genere, nessuno sarà in grado di farlo "correttamente". Il seguente dà lo stesso ordine, come lei ha detto, ma non vi è alcuna garanzia che si sta per dare il "giusto" ordinamento (come ci si potrebbe aspettare) per i valori di input: Codice:
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]);
|
|
||||
|
Secondo ordine che sembra essere una sorta prima alpha poi cifre: Codice:
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;
Google "Schwartzian Transform", se interessati alla tecnica di cache chiave di ordinamento. |
![]() |
| Segnalibri |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|