use strict; use v5.18; # pentru funcția fc (case insensitive) my @sortare; my @ordonare; my @gene = ('capza2', 'TFEC', 'cftr', 'loc51691', 'loc56311'); my @numere = (24, 4, 12, 102, 456, 10); my %secvente = (CAPZA2 => 'ATGCCTCCTCAGCTGCAAAACGGCCTGAACCTCTCGGCCAAAGTTGTCCAGGGAAGCCTG', TFEC => 'GAGGAAGAGGGCATCCTCAGGCGGCTGAAGAAGTATGACAACTGCTGGTTGGCTCTCACTCAACTG', CFTR => 'CTCGGGAAGAAGTGCTTTGCTCTCAGGATGGCCAGCCGGCTGGCCAAGGAGGAAGGGTGGAGCCGGCT', LOC51691 => 'CCCGGGTGGAAGGTTGAGTGCATGACATTGCCTGGATGAAGTTTGACGCACAA', LOC56311 => 'TTCAACCGGATCGATGGAAAAGCCAGCACCAAGCTCACGCCCATAGGCTACATCCCCAAG', PCK1 => 'AATGCCGACCTCCCCTGTGAAATCGAGAGAGAGATCCTTGCCTTGAAGCAAAGAATAAGCAAATCGAAAATCGA'); @sortare = sort @gene; print " @gene\n"; print " implementarea implicita a functiei, sortare literala ascendenta\n"; print " @sortare\n\n"; @sortare = sort {$a cmp $b} @gene; print " @gene\n"; print " implementarea explicita a functiei, sortare literala ascendenta\n"; print " @sortare\n\n"; @sortare = sort {fc($a) cmp fc($b)} @gene; print " @gene\n"; print " sortare literala ascendenta, nu tine cont de minuscule/majuscule\n"; print " @sortare\n\n"; @sortare = sort {fc($b) cmp fc($a)} @gene; print " @gene\n"; print " sortare literala descendenta, nu tine cont de minuscule/majuscule\n"; print " @sortare\n\n"; @sortare = sort {$a <=> $b} @numere; print " @numere\n"; print " sortare numerica ascendenta\n"; print " @sortare\n\n"; @sortare = sort {$b <=> $a} @numere; print " @numere\n"; print " sortare numerica descendenta\n"; print " @sortare\n\n"; @ordonare = sort { $secvente{$a} cmp $secvente{$b} } keys %secvente; foreach (sort keys %secvente) { print " $_ => $secvente{$_}: ",length($secvente{$_})," caractere\n"; } print " ordonare literala ascendenta dupa secventele corespunzatoare genelor\n"; print " @ordonare\n\n"; # metodă de sortare folosind o subrutină sub byname { return $a cmp $b; } my @sortare = sort byname @gene; print " @gene\n"; print " sortare strict literala ascendenta folosind o subrutina\n"; print " @sortare\n\n"; # metodă de sortare folosind o subrutină foreach (sort keys %secvente) { print " $_ => $secvente{$_}: ",length($secvente{$_})," caractere\n"; } sub bylength { return (length $secvente{$a}) <=> (length $secvente{$b}); } my @sortare = sort bylength keys %secvente; print " sortare ascendenta dupa lungimea secventelor folosind o subrutina\n"; print " @sortare\n\n";