1. Count
#!/usr/bin/perl -w ############################## #Goal: count array elements ############################## use strict; my @arr1 = (1,2,3,3,4,2,3); my %hash1; $hash1{$_}++ for @arr1; print "$_\t$hash1{$_}\n" for keys %hash1; my @arr2 = (23,5,9,109.29,23,23,9); my %hash2; map {!$hash2{$_}?$hash2{$_} = 1:$hash2{$_}++} @arr2; print $_."\t".$hash2{$_}."\n" for keys %hash2;
Output:
4 1 1 1 3 3 2 2 109.29 1 9 2 23 3 5 1
2. Sort
#!/usr/bin/perl ############################## #Goal: sort array elements ############################## use strict; my @arr = qw/int0 int1 int2 int3 int34 int5 int6 int7 int8 int69 int10 int10 int12 int13 int14 int15 int16 int17 int18 int19 int20/; print '<=>: ', join( ' ', sort { $a <=> $b } @arr ), "\n"; # string comparison; print 'cmp: ', join( ' ', sort { $a cmp $b } @arr ), $/; # Numeric comparison; my @sorted = map { "int$_" } 0..5, 17..20; print "@sorted", $/; # $/="\n"; my @new = map {$_->[1]} sort {$a->[0] <=> $b->[0]} map {/(\d+)/; [$1, $_]} @arr; print "@new", $/;
Output:
<=>: int0 int1 int2 int3 int34 int5 int6 int7 int8 int69 int10 int10 int12 int13 int14 int15 int16 int17 int18 int19 int20 cmp: int0 int1 int10 int10 int12 int13 int14 int15 int16 int17 int18 int19 int2 int20 int3 int34 int5 int6 int69 int7 int8 int0 int1 int2 int3 int4 int5 int17 int18 int19 int20 int0 int1 int2 int3 int5 int6 int7 int8 int10 int10 int12 int13 int14 int15 int16 int17 int18 int19 int20 int34 int69
3. Sort
#!/usr/bin/perl -w ################################### #Goal:1.first column increasing # 2.fifth column decrseasing # 3.second column decrseasing ################################### use strict; my @a = <DATA>; my @newa = map {$_->[-1]} sort {$a->[0] <=> $b->[0] || $b->[1] <=> $a->[1] || $b->[2] <=> $a->[2]} map {[(split)[0,4,1], $_]} @a; # "$_" at the end thus "$_->[-1]"; for (@newa) { print "$_"; } __DATA__ 200809 74889999 3.0 6.6 188 200810 74885444 4.0 1.0 200 200810 74885555 0.8 5.5 120 200810 74889888 4.0 1.0 200
Output:
200809 74889999 3.0 6.6 188 200810 74889888 4.0 1.0 200 200810 74885444 4.0 1.0 200 200810 74885555 0.8 5.5 120
4. Sort
#!/usr/bin/perl ############################## #Goal:sort by column 3 ############################## use strict; my @by_uid = map {$_->[0]} sort {$a->[1] <=> $b->[1]} map {[$_, (split /:/)[2]]} <DATA>; # "$_" at the beginning thus "$_->[0]"; for (@by_uid) { print ."\n"; } __DATA__ root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync
Output:
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync
没有评论:
发表评论